在Windows上用Python打印勾号U+2713时出现UnicodeEncodeError

4 投票
1 回答
3260 浏览
提问于 2025-04-18 17:30

我看过了如何在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命令行的其他默认编码。这样做之前,一定要先认真读一下上面的文章。

撰写回答