程序代码:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
with open('gbk.txt','r',encoding = 'gbk') as f:
print (f.read())
其中 gbk.txt 打开应该是“测试”两个中文字。
在 SublimeText3 中间运行,得到的结果如下:
Traceback (most recent call last):
File "/Users/Jane/PycharmProjects/python-learning/1030.py", line 14, in <module>
print (f.read())
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)
[Finished in 0.1s with exit code 1]
请问该如何解决?
我用Sublime Text3创建的 txt后缀文档,实际上已经是UTF-8编码,不用gbk 解译。 把所有gbk字段去掉,则可以正常显示中文了。
这东西我找了好几周,现在终于明白了
其实主要是UnicodeEncodeError: 'ascii' codec can't encode characters in position
其实print()函数的局限就是Python默认编码的局限,你目前python的默认编码不是'utf-8',改一下python的默认编码成'utf-8'就行
参考如下
import io
import sys
from urllib.request import urlopen
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8')
res = urlopen("http://www.baidu.com")
htmlBytes = res.read()
print(htmlBytes.decode('utf-8'))