在Windows上用Python打印勾号U+2713时出现UnicodeEncodeError
我看过了如何在Python中打印“批准”符号/勾号 (✓) U+2713,但是里面的答案对我都没用。我在Windows上运行的是Python 2.7。
print u'\u2713'
结果出现了这个错误:
exceptions.UnicodeEncodeError: 'charmap' 编码无法在位置 0-1 编码字符:字符映射到
这个:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
print '✓'
不管用,因为我在用Windows。
print u'\u2713'.encode('utf8')
打印出来的是✓,这不是正确的字符。
print('\N{check mark}')
这就太傻了。这个打印的是\N{check mark}
字面意思。
1 个回答
1
去看看这个链接:http://www.joelonsoftware.com/articles/Unicode.html,你就能明白发生了什么。
坏消息是:你无法打印那个字符,因为在你Windows终端的默认文本编码中根本没有这个字符。你需要修改终端的设置,把编码改成“utf-8”,而不是默认的“cp-852”或者现在Windows命令行的其他默认编码。这样做之前,一定要先认真读一下上面的文章。