gpt4 book ai didi

python - 为什么我收到 "UnicodeEncodeError: ' charmap' 编解码器无法编码字符”错误消息

转载 作者:太空宇宙 更新时间:2023-11-03 17:52:25 25 4
gpt4 key购买 nike

我在 Windows CMD 窗口中运行时编写的 Python 脚本遇到了问题,并将问题的本质归结为以下 SSCCE :

Python 脚本 (x.py)

import sys

in_file = open (sys.argv[1], 'rt')

for line in in_file:
line = line.rstrip ('\n')
print ('line="%s"' % (line))

in_file.close ()

输入数据文件 (x.txt)

Line 1
Line 2 “text”
Line 3

命令行调用

python x.py x.txt

错误输出

C:\junk>python x.py x.txt
line="Line 1"
Traceback (most recent call last):
File "x.py", line 7, in <module>
print ('line="%s"' % (line))
File "C:\Program Files (x86)\Python34\lib\encodings\cp862.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u201c' in position 13: character maps to <undefined>

C:\junk>

第二个输入记录(“第 2 行”)似乎失败了。我做错了什么?

最佳答案

答案是 Windows 代码页问题。

第二个输入行使用 ANSI 打印字符 0x93 (147) 和 0x94 (148),分别对应于左引号和右引号。尽管输入文件应该是 ASCII 文件(即字符 < 128 十进制),但与文本编辑器相比,文字处理器通常会插入这些特殊字符。

Python 能够很好地读取它,但在尝试将其打印到控制台窗口时抛出异常。如错误输出所示,错误消息来自 lib\encodings\cp862.py,它对应于 code page 862 ,MS_DOS 的希伯来语代码页。 Windows 尝试将 ANSI 字符 0x93 (147) 转换为 Unicode U+201C(“左双引号”),而 Python 的默认编码不支持该字符。

执行CHCP (Change Codepage) command给出:

C:\junk>chcp
Active code page: 862

C:\junk>

将 CMD 窗口的代码页更改为 CP 1252(“Latin-1”)可以解决该问题:

C:\junk>chcp 1252
Active code page: 1252

C:\junk>python x.py x.txt
line="Line 1"
line="Line 2 “text”"
line="Line 3"

C:\junk>

关于python - 为什么我收到 "UnicodeEncodeError: ' charmap' 编解码器无法编码字符”错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28941250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com