首页 > Python 3 下显示超出ascii编码范围

Python 3 下显示超出ascii编码范围

程序代码:

#!/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'))
【热门文章】
【热门文章】