本文目录一览:
- python gb2312编码问题
- 遇到python编码错误要怎么解决
- 网页编码和Python编码不匹配怎么办
- linux python运行报编码错误
- python3读文件编码错误怎么办
- python在print的时候出现编码错误?
python gb2312编码问题
使用python进行gb2312编码,遇到如下问题 其中编码错误的汉字是: 别克 再次遇到问题: 这次编码错误的字是:g l 8
遇到python编码错误要怎么解决
在将字符串写入文件时,执行f.write(str)
,后台总是报错:UnicodeEncodeError: 'ascii' codec can't encode character u'\u6211' in position 0: ordinal not in range(128)
,即ascii码无法被转换成unicode码。
刚开始我以为Python默认的编码是utf-8,所以使用decode
方法和encode
方法来进行编码转换,后来怎么也不成功,于是怀疑是否默认编码不是utf-8。
使用下面语句获取python当前的默认编码:
import sys
print(sys.getdefaultencoding())
网页编码和Python编码不匹配怎么办
网页编码格式有很多,比如UTF-8,GBK2312等,在网址页面按F12键,Ctrl+F搜索charset
可看到该网页使用的编码格式,如CSDN为charset="utf-8"
。我们使用python获取网页内容时,经常会由于网页编码问题导致程序崩溃报错或获取到一堆二进制内容,软件的兼容性很差。有一个办法,可以通过第三方库chardet
获取编码格式,再使用该编码格式解码数据可实现兼容。
- 安装chardet库
chardet
是第三方库,需要先安装再使用。简单的办法是启动DOS界面,进入python安装路径下Scripts路径中(其中有pip脚本),运行pip install chardet
,即可完成安装(可能需要先更新pip,根据提示运行命令即可); - 导入chardet、建立函数
Python工程中导入
chardet
库(import chardet
);建立函数如下:
以上函数的返回值即为网页解码后的内容,无论网页是哪种格式编码,都能轻松识别转换;需要注意的是解码时要加参数def get_url_context(url): content = urllib.request.urlopen(url) # 获取网页内容 encode = chardet.detect(content) # 获取网页编码格式字典信息,字典encode中键encoding的值为编码格式 return content.decode(encode['encoding'], 'ignore') # 根据获取到的编码格式进行解码,并忽略不能识别的编码信息
'ignore'
,否则网页中可能会有混合编码导致程序出错。
linux python运行报编码错误
一次重启服务器后,supervisor接管的python脚本中的函数 open()
和 print()
都会报下面的编码错误:
UnicodeEncodeError: 'ascii' codec can't encode
使用的是python3,按理说编码都会默认utf-8,而且本地运行的python脚本并没有这个问题。
经大佬指点,增加环境变量 export LC_ALL="en_US.UTF-8"
后,再重启supervisor,问题解决。
下面是复制的:
Locale是一个软件在运行时的语言环境,是根据计算机用户所使用的语言,所在国家或者地区,以及当地的文化传统所定义的。它包括语言(Language), 地域 (Territory) 和字符集(Codeset)。
一个locale的书写格式为: 语言[ 地域[.字符集]]。完全的locale表达方式是 [语言[ 地域][.字符集] [@修正值]。例如:
zh_CN.GB2312
= 中文_中华人民共和国+国标2312字符集。
(1)locale把按照所涉及到的文化传统的各个方面分成12个大类
(2)查看标准字符集列表
常用字符集:en_US.utf8
、zh_CN.gb2312
、zh_CN.gbk
、zh_CN.utf8
等
3.Locale的设定
LC_ALL和LANG优先级的关系:LC_ALL
> LC_*
> LANG
- (1)如果需要一个纯中文的系统的话,设定
LC_ALL= zh_CN.XXXX
即可。或者设定LANG=zh_CN.XXXX
也可以,但是LC_*
不要有任何特殊设定才可以(因为LC_*
优先级高)。 - (2)如果需要个性化的环境,例如只想要一个可以输入中文的环境,而保持菜单、标题,系统信息等等为英文界面,那么只需要设定
LANG=en_US.XXXX
,然后LC_CTYPE=zh_CN.XXXX
就可以了。 - (3)假如什么也不做的话,也就是
LC_ALL
,LANG
和LC_*
均不指定特定值的话,系统将采用POSIX作为locale,也就是C locale。
4.查看与设定字符集实践
- (1)查看当前系统字符集三种方式(
LC_ALL
、LC_CTYPE
和LANG
),以查看LANG
为例: - (2)更改系统字符集 备注:直接执行上述命令,可以临时修改系统字符集。如果写入环境变量可以永久改变字符集。
- (3)取消当前系统字符集(设定为空) 备注:直接执行上述命令,可以临时修改系统字符集。如果写入环境变量可以永久改变字符集。
python3读文件编码错误怎么办
在python3中系统默认编码是unicode,读取文件经常会编码错误导致报错。
首先先确认要读取文件的编码,可这样操作:
记事本打开文本文件,点击“文件”-“另存为”查看编码:
如图显示编码就是当前的文件编码,这里是“utf-8”。
2. 要想用指定编码打开,使用codecs
模块
安装模块pip命令:
pip install codecs
- 使用codecs模块,例如读取test文件内容并打印:
import codecs
f = codecs.open(r"test.txt", "r", "gbk")
print(f.read())
f.close()
(示例的文件是ANSI所以使用GBK读取) 以上就可以正确读取想要的文件了。
python在print的时候出现编码错误?
这个是由于IDE(你的是pycharm?)的默认编码没对,修改为utf-8就可以了(自己找在哪改,不是代码里改)