python2(中文编码问题):UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1...

  python在安装时,默认的编码是ascii,当程序中出现非ascii编码时,python的处理常常会报这样的错UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in range(128),python没办法处理非ascii编码的,此时需要自己设置将python的默认编码,一般设置为utf8的编码格式。
  查询系统默认编码可以在解释器中输入以下命令:
python代码
  >>>sys.getdefaultencoding()
  设置默认编码时使用:
python代码
  >>>sys.setdefaultencoding('utf8')
  可能会报AttributeError: 'module' object has no attribute 'setdefaultencoding'的错误。执行reload(sys),再执行以上命令就可以顺利通过。
此时再执行sys.getdefaultencoding()就会发现编码已经被设置为utf8的了,但是在解释器里修改的编码只能保证当次有效,在重启解释器后,会发现,编码又被重置为默认的ascii了。
  有2种方法设置python的默认编码:
  一个解决的方案在程序中加入以下代码:
  Python代码
  # encoding=utf8
  import sys
  reload(sys)
  sys.setdefaultencoding('utf8')
  另一个方案是在python的Lib\site-packages文件夹下新建一个sitecustomize.py,内容为:
  Python代码
  # encoding=utf8
  import sys
  reload(sys)
  sys.setdefaultencoding('utf8')
  此时重启python解释器,执行sys.getdefaultencoding(),发现编码已经被设置为utf8的了,多次重启之后,效果相同,这是因为系统在python启动的时候,自行调用该文件,设置系统的默认编码,而不需要每次都手动的加上解决代码,属于一劳永逸的解决方法。

转载于:https://www.cnblogs.com/walk1314/p/7251126.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UnicodeDecodeError: 'ascii' codec can't decode byte 0x91 in position 1: ordinal not in range(128) 是一个编码解码错误,表示在尝试将一个ASCII编码的字符串解码为Unicode时出现了问题。这通常是因为文本中包含了非ASCII字符,而解码器默认使用的是ASCII编码。要解决这个问题,可以采取以下方法: 1. 使用合适的编码解码器:可以使用适当的编码解码器,如UTF-8,来解码包含非ASCII字符的文本。例如,在Python中,可以使用str对象的decode()方法来指定合适的解码器,如decode('utf-8')。 2. 指定文件的编码格式:如果该问题是在读取文件时出现的,可以在打开文件时指定正确的编码格式。例如,在Python中,可以使用open()函数的encoding参数来指定编码格式,如open('file.txt', encoding='utf-8')。 3. 处理非ASCII字符:如果需要处理非ASCII字符,可以使用相应的编码进行处理。在Python中,可以使用encode()方法将Unicode字符串编码为指定的编码格式,如encode('utf-8')。 4. 使用合适的工具:如果以上方法不能解决问题,可能需要使用专门处理Unicode编码的工具或库来处理非ASCII字符。例如,在Python中,可以使用unicodedata模块来处理Unicode字符。 总结一下,UnicodeDecodeError: 'ascii' codec can't decode byte 0x91 in position 1: ordinal not in range(128) 是由于尝试将ASCII编码的字符串解码为Unicode时出现了问题,可以通过使用合适的编码解码器,指定文件的编码格式,处理非ASCII字符或使用合适的工具来解决这个问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [python解决汉字编码问题Unicode Decode Error](https://download.csdn.net/download/weixin_38698433/14912364)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [pickle.load出现UnicodeDecodeError: ‘asciicodec can‘t decode byte 0x8b in position 6: ordinal ...](https://blog.csdn.net/weixin_43178406/article/details/129289048)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值