python 中遇到 UnicodeEncodeError 的解决方法之一
我最近玩 python 遇到使用 json.loads 转换 json 内容时,如果里面包含:
或 Ⅰ·Ⅱ·Ⅲ·Ⅳ·Ⅴ·Ⅵ·Ⅶ·Ⅷ·Ⅸ·Ⅹ·Ⅺ·Ⅻ
这些特殊字符时,就会报错。
UnicodeEncodeError: ‘ascii’ codec can’t encode character ‘\uff1a’ in position 40: ordinal not in range(128)
报错代码如下:
1 | File "/usr/lib/python3.5/urllib/request.py", line 163, in urlopen |
这个问题困扰我好几天,中间折腾的过程就不多说了。
下面说一下我的解法方法,灵感来自上面这段报错代码的第 17 和 18 行。
首先用 vi 或 nano 等编辑器,打开 /usr/lib/python3.5/http/client.py
这个文件,然后定位到 984 行。将 self._output(request.encode('ascii'))
修改成 self._output(request.encode('utf-8'))
。重新跑代码后完美解决。