python文件写入显示UnicodeError的错误
我需要制作cp932(它是扩展的python文件写入显示UnicodeError的错误,python,utf-8,encode,shift-jis,Python,Utf 8,Encode,Shift Jis,我需要制作cp932(它是扩展的shift-jis) UnicodeEncodeError:'cp932'编解码器无法对位置0中的字符'\u270c'进行编码:非法的多字节序列 import codecs mytext = '\u270c' with codecs.open(path,mode='w',encoding='cp932') as f: mytext.encode('cp932',"ignore") f.write(mytext
shift-jis
)
UnicodeEncodeError:'cp932'编解码器无法对位置0中的字符'\u270c'进行编码:非法的多字节序列
import codecs
mytext = '\u270c'
with codecs.open(path,mode='w',encoding='cp932') as f:
mytext.encode('cp932',"ignore")
f.write(mytext)
exit()
我只是简化了本文的mytext
我认为这个字符通过了忽略flg的编码
但是,write
显示错误
有没有办法解决这个问题???
\
是cp932中的功能符号。因此,如果你想编码\
,你应该使用\\
就你而言:
import codecs
mytext = '\\u270c'
with codecs.open(path,mode='w',encoding='cp932') as f:
mytext.encode('cp932',"ignore")
f.write(mytext)
exit()
在您的示例中,文件
f
希望Unicode字符串被传递到f.write()
,并且它们将按照codecs.open
的声明进行编码,因此代码尝试双重编码。另外,'\u270c'
不是CP932支持的字符,因此在任何情况下都不能写入CP932文件
假设Python 3以特定编码编写Unicode字符串文本
,请使用:
with open('output.txt','w',encoding='cp932') as f:
f.write(text)
编解码器
是一个较旧的模块,不需要。在Python2中,io.open
是与Python3的open
等效的后端口,为了便于移植,Python3也支持它。即使没有编解码器,代码也可以在我的计算机上正常工作。请在open()
函数中输入errors='ignore'
标志。注意:您的语句mytext.encode(…)
丢弃返回值<代码>mytext未更改。cp932
不支持“\u270c”
(胜利之手,✌).'\u270c'
和'\\u270c'
是两个不同的东西。@lenz我不明白你的意思…那代码是他的意图。编码和转义不是一回事。OP问到编码,你说的是转义。'\u270c'
是一个单字符字符串,但当你转义为时反斜杠\\u270c'
,您将得到一个包含六个字符的字符串–选中len('\u270c')、len('\\u270c')
。当您对任意一个字符串进行编码时,您将得到一个bytes
对象(不再是str
);长度取决于选择的编码。哦,我不知道有什么区别……我还是个初学者。我为自己感到羞愧。谢谢你,伦茨。