解决Python UnicodeDecodeError: ‘ascii’ codec can’t decode

注:本文转自http://blog.youkuaiyun.com/mindmb/article/details/7898528

 

今天做网页到了测试和数据库交互的地方,其中HTML和数据库都是设置成utf-8格式编码,插入到数据库中是正确的,但是当读取出来的时候就会出错,原因就是python的str默认是ascii编码,和unicode编码冲突,就会报这个标题错误。那么该怎样解决呢?

通过搜集网上的资料,自己多次尝试,问题算是解决了,在代码中加上如下几句即可。

import sys
reload(sys)
sys.setdefaultencoding('utf8')

http://docs.python.org/howto/unicode.html这个是python的unicode编码API文档,英文好的同学可以看一下,加深理解。

参考资料:http://groups.google.com/group/python-cn/browse_thread/thread/f48ef745452740f6?pli=1

点击打开链接

------------------------------------------------------------------------------------------------------------------------

 

混淆了 python2 里边的 str 和 unicode 数据类型。

0.

你需要的是让编码用实际编码而不是 ascii

1.

对需要 str->unicode 的代码,可以在前边写上

import sys

reload(sys)

sys.setdefaultencoding(‘utf8′)

把 str 编码由 ascii 改为 utf8 (或 gb18030)

2.

python3 区分了 unicode str 和 byte arrary,并且默认编码不再是 ascii

 

 

 

### RTEMS 中 UnicodeDecodeError解决方案 在 RTEMS 环境下运行 Python 或其他脚本时,如果遇到 `UnicodeDecodeError` 错误提示 `'ascii' codec can't decode`,这通常是因为默认字符编码设置为 ASCII 而无法处理非 ASCII 字符串。以下是详细的分析和解决方法: #### 1. **错误原因** 该错误表明当前环境尝试解码一个包含非 ASCII 字符的数据流,而系统的默认编码被设定为了 ASCII 编码[^2]。ASCII 只能表示范围内的有限字符集 (0–127),因此当数据中存在超出此范围的字符时会引发异常。 #### 2. **修改默认编码方式** 可以通过调整 Python 默认编码来支持更广泛的字符集(如 UTF-8)。具体操作如下: ```python import sys import io sys.stdout.reconfigure(encoding='utf-8') # 设置标准输出为 utf-8 sys.stdin.reconfigure(encoding='utf-8') # 设置标准输入为 utf-8 ``` 通过重新配置 I/O 流的编码可以有效避免因默认 ASCII 导致的解码失败问题[^3]。 #### 3. **文件读取中的编码指定** 如果是由于从外部文件加载数据而导致的错误,则需显式指明文件打开模式下的编码参数。例如,在读取文本文件时应加入 `encoding='utf-8'` 参数: ```python with open('example.txt', 'r', encoding='utf-8') as file: content = file.read() print(content) ``` 这样能够确保即使文件中含有特殊字符也能正常解析而不抛出异常[^4]。 #### 4. **环境变量的影响** 有时操作系统级别的区域选项和地区设置也会影响程序的行为。确认并适当更改这些设置可能有助于解决问题。对于 Linux/Unix 类型系统来说,可通过命令行查看或改变 LANG 和 LC_ALL 这两个重要环境变量值: ```bash export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 ``` 以上两条指令将强制整个 shell session 使用 UTF-8 编码作为其基础文字处理机制的一部分[^5]。 #### 5. **升级相关库版本** 部分旧版软件包可能存在不兼容新标准的情况,考虑更新至最新稳定发行版或许同样有所帮助。利用 pip 工具完成依赖项管理过程较为简便快捷: ```bash pip install --upgrade package_name ``` 综上所述,针对 RTEMS 平台上的 `UnicodeDecodeError` 处理策略主要包括但不限于上述几个方面。实际应用过程中可根据具体情况灵活选用合适的方法组合加以应对。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值