Jac*_* S. 1 python character-encoding python-3.x
使用python 3.2,我试图使用str(bytes,"cp1251")解码字节,但是我得到了这个错误:
Traceback (most recent call last):
File "C:\---\---\---\---.py", line 4, in <module>
writetemp.write(str(f.read(), "cp1251"))
File "C:\Python32\lib\encodings\cp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 19-25: character maps to <undefined>
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我指定了"cp1251",但它试图使用"cp1252.py"来解码而不是"cp1251.py",这会导致错误,我想.如果我尝试"Windows-1251"而不是"cp1251",也会出现同样的情况.
注意你得到的是一个UnicodeEncodeError,而不是一个UnicodeDecodeError.该错误不是来自您的str(f.read(), "cp1251")电话.相反,它来自writetemp.write()电话.
该str()调用将您从f.read()使用的字节解码cp1251为编码.这样可行.这给你一个字符串(在Python 3中是unicode)writetemp.write()然后必须通过编码将字符串转回字节.它使用您在打开时传递的编码writetemp或默认的IO编码(Python根据各种事物尝试猜测)来实现.您可以通过查看encoding文件对象的属性来查看哪种编码.你可能会发现它是cp1252.如果你想用特定的编码写,不要依赖Python猜测它; 在打开文件时显式指定编码.
| 归档时间: |
|
| 查看次数: |
872 次 |
| 最近记录: |