python2.X编码问题梳理

ArcGIS Pro工具箱迁移避坑指南:从‘Analyze Tools For Pro’报错到成功运行的完整复盘 本文详细解析了从ArcMap迁移自定义脚本工具箱到ArcGIS Pro的完整流程,重点解决Python环境差异导致的兼容性问题。通过典型报错案例分析、工具调用语法对照和高级优化策略,帮助用户规避迁移陷阱,实现工具箱的高效适配与性能提升。 阅读详情
首先这些问题只有在python2.X版本出现,因为3.X版本中python环境就只有unicode类型的字符串了,即所有程序中处理的都会自动转换成unicode字符串。那么2.X的python程序开发中如何避免和理清编码问题呢?首先要保持一个良好的统一规则,不然一切都是白扯了,统一都用utf-8是最好的。

python中会用到编码的不同地方有:

1、python源文件的编码
2、python运行时环境的编码
3、python程序接收的外部输入字符串的编码


首先,源文件中的编码就是对文件中非英文字符的编码和保存方式,默认是用操作系统的默认编码;这个编码是由系统的locale决定的【通过systeminfo.exe可以查到】,如:locale设置为zh-CN,那么其默认编码就是ASCII码【locale.getdefaultlocale()】,所以此时源文件中有非英文字符时就会编码报错,解决办法是在源码文件头部加一行编码指定,如:# -*- coding: utf-8 -*-,这样就是指定了源文件中非英文字符的编码方式。

其次,运行时环境的编码,通过python在运行时首先获取系统locale的信息【locale.getdefaultlocale()】,如:zh-CN的默认编码是ASCII码,对于英文字符解码都正常,当遇到多字节文字,就会用文件系统的默认编码【sys.getdefaultencoding()】,zh-CN时是GBK。这就是我们通常在windows系统的命令行环境中启动python的效果,所有输入的字符串都是str类型,英文的是ascii类型,中文的则是gbk类型。同样在python中有一个unicode函数,其在解码字符串时使用的就是前面所说的一套逻辑。再来说说如何在python环境中设置编码,首先直接设置unicode字符,比如:u'中文',这样就是直接把一个字符串转换成unicode字符串,任何编码环境下输入这样的字符串其都会相应的被解码成unicode字符串;还有就是设置python运行环境编码【sys.getdefaultencoding()】,zh-CN中默认是GBK,不过我们可以修改它,这样python环境中默认的解码方式都会使用这个设置的编码,如:
import sys 
reload(sys)# Python2.5 初始化后会删除 sys.setdefaultencoding 这个方法,我们需要重新载入 
sys.setdefaultencoding('utf-8')

再次,外部输入的编码,比如读取文件;内置的open()方法打开文件时,read()读取的是str,读取后需要使用正确的编码格式进行decode()。 write()写入时,如果参数是unicode,则需要使用你希望写入的编码进行encode(),如果是其他编码格式的str,则需要先用该str的编码进行decode(),转成unicode后再使用写入的编码进行encode()。如果直接将unicode作为参数传入write()方法,Python将先使用源代码文件声明的字符编码进行编码然后写入。


总结,基本上这3个环节上都使用了统一的编码,那自然就没有什么大问题,而上面的3个环节中前2个我们可以控制,第三个是和使用者有关的,不可确定但是我们可以在接收用户或者外部输入时就对其进行编码识别,并在接收字符的同时第一时间就将其解码为unicode,这样就可以尽量减少编码问题的出现了。

if s.decode('utf-8', REPLACE)==s.decode('utf-8', IGNORE):
    s = s.decode('utf-8')
elseif ....
    ....


Python基础知识点梳理 python常见知识点梳理 摘要: 本文主要介绍一些平时经常会用到的python基础知识点,用于加深印象。python的详细语法介绍可以查看官方编程手册,也有一些在线网站对python语法进行了比较全面的介绍,比如菜鸟教程: python3 教程|菜鸟教程 本文主要是介绍基础语法,操作实例在另一篇博客中单独介绍: python语言介绍 python是一门解释型语言,python的设计目标: 一门... 阅读详情

相关推荐

python2 编码问题的测试代码

使用python进行中文字符处理时总会出现乱码问题,这个例子用与说明python的编码转换过程很常见的5个问题

Python_关于python2的encode(编码)和decode(解码)的使用

在使用Python2时,我们习惯于在文件开头声明编码不然在文件中出现中文,运行时就会报错 SyntaxError: Non-ASCII character... 之类,这是因为python2的文件编码默认使用的如果在开头声明了编码,文件编码就会变为utf-8。

GDYY3721的博客 3206

常见消息队列:ActiveMQ、RabbitMQ、RocketMQ、Kafka的区别总结

常见消息队列:ActiveMQ、RabbitMQ、RocketMQ、Kafka的区别。

qq_30713721的博客 3471

彻底搞懂Python的字符编码

前言:中文编码问题一直是程序员头疼的问题,而Python2中的字符编码足矣令新手抓狂。本文将尽量用通俗的语言带大家彻底的了解字符编码以及Python2和3中的各种编码问题。一、什么是字符编码。要彻底解决字符编码的问题就不能不去了解到底什么是字符编码。计算机从本质上来说只认识二进制中的0和1,可以说任何数据在计算机中实际的物理表现形式也就是0和1,如果你将硬盘拆开,你是看不到所谓的数字0和1的,你能看

求人不如求己,思考才能进步! 3万+

【Tessent Shell Users Manual】【Ch3】Design Introspection and Editing(未完待续)

Tessent Shell 提供了一系列用于检查(examining/introspecting)和编辑design的命令。

Tranquil_ovo的博客 1731

Matlab实战:3种雷达间歇采样干扰的仿真与识别(附完整代码)

本文通过Matlab实战,详细仿真了雷达有源间歇采样干扰的三种核心样式:直接转发、重复转发和循环转发干扰。文章提供了完整的代码实现,并深入探讨了基于时频分析和循环平稳分析的特征提取与识别方法,为雷达抗干扰技术的学习与实践提供了清晰的工程实现路径。

weixin_29053695的博客 364

处理Python2.7读写文件中的中文乱码问题

Python2.7对于中文编码的问题处理的并不好,这几天在爬数据的时候经常会遇到中文的编码问题。这里总结了文件读写中遇到的中文乱码问题的解决方案,供大家交流和学习。

haha_point的博客 1万+

VLA数据采集以及训练

直到15s计时结束,弹出下面的内容,这个时候不会录制视频了,这里就是需要复位物体到初始位置,尽量保证物体的初始位置放在一样的位置,计时3s,同样根据自己的复位时间来修改(--dataset.reset_time_s=3),这里和前面录制数据的区别就是fps后面多了一个nment,可以作为一个标记,知道什么时候开始去复位而不会拍到自己的手臂。复制网址,在浏览器打开,会出现下面的窗口,依次检查每一轮是否存在问题,例如是否出现录制不完整,是否存在除了机械臂以外的其他移动物体,这些都可能会影响最终训练的效果。

weixin_45303602的博客 496

python2、python3编码问题的理解

相信大多数人在学习python的过程中,遇到第一个比较棘手的问题就是编码错误,这段时间在学习python,被这个问题困惑了好几个星期了,然后就不断的上网查资料,零零散散的看了挺多了,特此写篇博客整理下,也方便自己日后的学习。由于本人水平有限,难免会出现不足、错误之处,还请批评指正。 1. 浅谈编码 我们都知道,计算机并不认识我们平常使用的字符,字符在计算机中的表示形式是低电平和高电平组成的序列...

weixin_41558411的博客 1380

自然语言处理在智能客服系统中的应用

引言与背景 1.1 书籍的目的和内容概述 《自然语言处理在智能客服系统中的应用》旨在探讨自然语言处理(NLP)技术在智能客服系统中的应用,帮助读者理解NLP的核心概念及其在解决实际业务问题中的关键作用。随着人工智能技术的快速发展,自然语言处理成为构建智能客服系统的核心模块之一。本书将深入解析NLP

AI天才研究院 966

RT-Thread Studio 使用笔记(七)| 配合STM32CubeMX添加裸机驱动(以ADC为例)

1. 配置STM32CubeMX 2. 复制stm32xxxx_hal_msp.c文件 将 CubeMx 生成的代码 stm32f7xx_hal_msp.c 函数复制到 RT-Thread Studio 生成的工程中,并参与工程编译: 由于我们并没有使用 CubeMx 生成的工程,所以这里需要将 stm32f7xx_hal_msp.c 文件中 #include “main.h” 替换为 #i...

Mculover666的博客(嵌入式) 9624

不想再被鄙视?那就看进来! 一文搞懂Python2字符编码_鄙视文字符

前面已经提到,unicode只是编码规范(只是字符与二进制的映射集合),而utf-8是具体的编码规则(不仅包含字符与二进制的映射集合,而且映射后的二进制是可以用于存储和传输的),即utf-8负责把unicode转换成可存储和传输的二进制字符串即str类型,我们称这个转换过程为编码。而从str类型到unicode类型的过程,我们称之为解码。Python中使用decode()和encode()来进行解码和编码,以unicode类型作为中间类型。如下图所示Python。

2401_84562210的博客 1006

手把手教你学 MATLAB 实战训练(6.9):卷积神经网络(CNN)模型来进行图像分类任务(预训练的 ResNet-50 模型)

加载数据集数据预处理加载预训练模型修改和扩展预训练模型设置训练选项训练模型测试模型。

xiaoheshang_123的博客 646

Keypatch错误排查手册:解决常见安装和运行问题的完整方案

Keypatch作为IDA Pro的强大多架构汇编器插件,是逆向工程师的必备工具。然而在安装和使用过程中,许多用户可能会遇到各种问题。本手册将为您提供完整的Keypatch错误排查方案,帮助您快速解决安装和运行中的常见问题。😊 ## 🔧 常见安装问题及解决方案 ### 1. Keystone引擎安装失败 **问题现象**: 启动IDA Pro时提示"fail to load the dy

gitblog_07582的博客 435

【2026最新版】Open3D(C++)点云处理算法汇总(C++长期更新版)

C++版本Open3D进行点云处理的一些算法使用案例。博客长期更新,最近一次更新时间为:2026年4月11日。

点云侠的博客 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

关于Python2中utf8,gbk,ascii的编码问题

python2中因为ascii,Unicode和utf-8导致的编码问题

人生苦短 3227

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Python 编码最全梳理

任何编码转换之前都要解码成unicode,再转换到目标编码u 开头的是unicode 编码b 开头的是bytePython3的str 默认不是bytes,所以不能decode,只能先encode转为bytes,再decodePython2的str 默认是bytes,所以能decodePython 2.x 的编码注意规则utf_8_a = '中文'#输出结果: 中文疑问例子>>> a = {"data" : "你是谁\035我是段誉"}

weixin_44974875的博客 1538

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

python中文编码梳理

python3 默认都是unicode编码,可以通过encode得到其他编码 >>> a = "我的" >>> a.encode() b'\xe6\x88\x91\xe7\x9a\x84' >>> a.encode("unicode_escape") b'\\u6211\\u7684' 二进制流转中文,decode >>&...

weixin_39422563的博客 541

python2和python3的编码区别

在讨论两个版本python间编码区别前,需要理解计算机编码的问题。编码介绍网上有很多资料,不过这里我还是想按照自己的理解说一下。一方面为了文章的完整性,另一方面借此梳理一下编码知识。计算机中只有0和1,一切都是有二进制表示,包括文本字符。当我们编辑文本"hello world"并保存,计算机首先把文本编码为二进制表示,然后再存储。当我们试图读取刚才保存的文本,首先也是读取二进制数据,然后通过解码,...

blues_more的专栏 1217

Python2 和 Python3 中默认编码的差异

最近在使用 Python3.4 做一些脚本实现,发现对于编码的处理上和 Python2.6 有很大的不同,就此机会把相关知识做个梳理,方便需要的时候查阅。

sylan215的软件测试技术学习 642

Python中的字符串与字符编码

Python字符串和编码讲解,文章中间花了很大的篇幅介绍概念和理论,后面注重实践,希望对您有所帮助

记录学习路上的一些拙见 2132

python编码解码梳理

        最近小白写python爬虫,又遇到编码问题,真的难受!!!之前遇到编码问题照着网上最后也能解决,不过每次写完感觉对编码转换还不是很明白。为此想起了自己之前买的一本《流畅的Python》,里面就有一章是讲述文本和字节序列,看了一小节顿时茅塞顿开。因此重新梳理了一遍自己对编码的理解,如有错误,请告诉我,谢谢~!本文部分内容来自这本书。lation1    (即iso8859_1) ...

Rosefinch 1604

python2.7中文编码

问题1:在编辑器(如Notepad++)中print '中文' SyntaxError: Non-ASCII问题2:在编辑器(如Notepad++)中#-*- coding:utf-8- *- print '中文' 在windows cmd乱码:涓枃问题3::在编辑器(如Notepad++)中# -*- coding: utf-8 -*- print '中文'.decode('utf-8') #

qianmosolo的博客 881

python基础篇-字符编码问题

一、前言 Python中的字符编码是个老生常谈的话题,同行们都写过很多这方面的文章。有的人云亦云,也有的写得很深入。近日看到某知名培训机构的教学视频中再次谈及此问题,讲解的还是不尽人意,所以才想写这篇文字。一方面,梳理一下相关知识,另一方面,希望给其他人些许帮助。 Python2的 默认编码 是ASCII,不能识别中文字符,需要显式指定字符编码;Python3的 默认编码 为Unicode,可以识...

LLand520的博客 275

Python3 的编码解码

Python3的编码解码 梳理一下编码方面的知识点。 一、字符编码发展史 1、ASCII 背景:计算机设计8个比特(bit)作为一个字节(byte),即 1 字节对应 8 位二进制数,而每位二进制数有 0、1两种状态,因此 1 字节可以组合出 256 种状态。由此,美国设计出ASCII编码字典,英文字母和一些符号对应这些8位二进制数。 说明:1个字节代表一个字符。 例如:A 的编码为 65(对应二...

wk的博客 1464
上一篇: MySQL使用--内建函数篇
下一篇: webpy中配置发送邮件服务
上帝De助手
上帝De助手 领域专家: Python技术领域 领域专家: Python技术领域
博客等级 码龄19年 1494粉丝 215原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

上帝De助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值