修复UnicodeEncodeError:'charmap'编解码器无法编码python3中的字符

时间:2016-03-24 08:57:14

标签: python-3.x unicode

我有一个文件input.txt,它只包含一行:“obra銮n”。我是如何得到a separate problem的汉字,我不想在这里解决,这里我只想在Windows上使用Python 3在命令行上打印该文件的内容(我在Linux上没有这个问题) )。

我一直在谷歌搜索这个问题一个小时,并且在没有弄清楚解决方案的情况下迷失了我的思绪。这是我有多远:

# -*- coding: utf-8 -*-
f = open("input.txt", encoding='utf8')
s = f.read()

print(type(s))
#print(s) #error
b = s.encode('utf-8')
print(type(b))
print(b)
#print(b.decode("utf-8")) #error
#print(b.decode('unicode_escape')) #error

此代码的输出为:

<class 'str'>
<class 'bytes'>
b'obra\xe9\x91\xben\n'

前两个评论行的错误相同:

UnicodeEncodeError: 'charmap' codec can't encode character '\u947e' in position 4: character maps to <undefined>

最后一条评论行的错误是:

UnicodeEncodeError: 'charmap' codec can't encode character in position 5-6: character maps to <undefined>

我现在已经开始思考该怎么做了。有关如何使用Python 3在Windows命令行上打印此文件内容的任何想法?

感谢。

1 个答案:

答案 0 :(得分:2)

Windows命令行通常没有支持亚洲字符的字体,除非您的系统区域设置是亚洲语言环境。您可以在“控制面板”,“区域和语言”,“管理”选项卡(Windows 7)中更改系统区域设置。

否则,您可以尝试win-unicode-console,但仍需要找到支持亚洲字符的固定宽度控制台字体。

Installing console fonts