首页 > 编程知识 正文

python出现编码问题(有一段python的编码程序如下)

时间:2023-11-30 11:44:49 阅读:310558 作者:UETN

本文目录一览:

  • 1、python gb2312编码问题
  • 2、遇到python编码错误要怎么解决
  • 3、网页编码和Python编码不匹配怎么办
  • 4、linux python运行报编码错误
  • 5、python3读文件编码错误怎么办
  • 6、python在print的时候出现编码错误?

python gb2312编码问题

使用python进行gb2312编码,遇到如下问题

其中编码错误的汉字是: 别克

经过阅读这篇文章 GBK与GB2312的些许不同 使用gbk进行编码,问题就解决。

再次遇到问题:

这次编码错误的字是: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当前的默认编码:

[python] view plain copy

import sys

print sys.getdefaultencoding()

网页编码和Python编码不匹配怎么办

网页编码格式有很多,比如UTF-8,GBK2312等,在网址页面F12键,ctrl+f搜索charset可看到该网页使用的编码格式,如CSDN为charset=”utf-8”。我们使用python获取网页内容时,经常会由于网页编码问题导致程序崩溃报错或获取到一堆二进制内容,软件的兼容性很差。有一个办法,可以通过第三方库chardet获取编码格式,再使用该编码格式解码数据可实现兼容。

1、安装chardet库

chardet是第三方库,需要先安装再使用。简单的办法是启动DOS界面,进入python安装路径下Scripts路径中(其中有pip脚本),运行”pip install chardet”,即可完成安装(可能需要先更新pip,根据提示运行命令即可);

2、导入charset、建立函数

python工程中导入charset库(”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作为lcoale,也就是C locale。

4.查看与设定字符集实践

(1)查看当前系统字符集三种方式(LC_ALL、LC_CTYPE和LANG),以查看LANG为例:

(2)更改系统字符集

备注:直接执行上述命令,可以临时修改系统字符集。如果写入环境变量可以永久改变字符集。

(3)取消当前系统字符集(设定为空)

备注:直接执行上述命令,可以临时修改系统字符集。如果写入环境变量可以永久改变字符集。

python3读文件编码错误怎么办

在python3中系统默认编码是unicode,读取文件经常会编码错误导致报错。

首先先确认要读取文件的编码,可这样操作:

记事本打开文本文件,点击“文件”-“另存为”查看编码:

如图显示编码就是当前的文件编码,这里是“utf-8”。

2. 要想用指定编码打开,使用codecs模块

安装模块pip命令:

pip install codecs

3. 使用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就可以了(自己找在哪改,不是代码里改)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。