python版本3.5.1,print 输出 © 字符报错,试了用decode转换也没用,求大神解决的办法!
print("\xa9")
UnicodeEncodeError: 'gbk' codec can't encode character 'xa9' in position 0: ill
egal multibyte sequence
python版本3.5.1,print 输出 © 字符报错,试了用decode转换也没用,求大神解决的办法!
print("\xa9")
UnicodeEncodeError: 'gbk' codec can't encode character 'xa9' in position 0: ill
egal multibyte sequence
# coding=utf-8
a = '©'
print a
输出结果:
如果把代码中的# coding=utf-8
去掉,抛如下异常:
SyntaxError: Non-ASCII character '\xc2' in file D:\web\file_test.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
然后我又写成这样:
# coding=utf-8
b = '\xa9'
print b
报错了:
Decode error - output not utf-8
(这个错是Sublime的问题,在命令行下未报错,也什么都没输出)
虽然我用的是2.7
,且异常和题主不一样,但可以参考。
编码问题一直是程序员最头疼的问题之一……
专门装了下3.5.1试了下
Python 3.5.1 (default, Apr 22 2016, 09:00:13)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print("\xa9")
©
我这边好像没什么问题
推断你输出环境是:Windows中的终端cmd(之前的,你当时的,默认编码是GBK) 或 Windows中VSCode中的内置的集成终端(默认编码是GBK)
而GBK
编码不支持(字符集中就不包含)字符:©
所以才报错:
UnicodeEncodeError: 'gbk' codec can't encode character 'xa9' in position 0: illegal multibyte sequence
换个支持©
的编码,比如GB18030
,UTF-8
如果当前环境是:Windows中系统终端的,则可以用代码:
方式1:
sys.stdout.reconfigure(encoding='GB18030')
方式2:
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='GB18030')
即可。
详细解释见:
【已解决】Windows中VSCode中输出字符串到终端报错:UnicodeEncodeError gbk codec can’t encode character \xa9
3 回答3.1k 阅读✓ 已解决
2 回答1.9k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
2 回答1.8k 阅读✓ 已解决
4 回答1.9k 阅读
3 回答1.7k 阅读
1 回答1.4k 阅读✓ 已解决
python3
IDLE下运行是正常的。楼主没说你是怎么运行的?
输出的字符会被转换成终端的编码。
windows下的cmd 默认是cp936。
所以你直接运行的时候这个字符会被python尝试转成gbk编码,转换失败后就这样了。
解决方法之一是用IDLE中执行你的代码。
方法之2,cmd 中先执行chcp 65001把cmd的默认编码改为unicode,再执行python
http://imysqldba.blog.51cto.com/1222376/706672