python文件写入显示UnicodeError的错误

2024-05-14 12:39:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要制作cp932(它已展开shift-jis

UnicodeEncodeError: 'cp932' codec can't encode character '\u270c' in position 0: illegal multibyte sequence

    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显示错误

有没有办法解决这个问题


Tags: inshiftpositioncancodecencodewritecodecs
2条回答

在您的示例中,文件f希望Unicode字符串被传递到f.write(),并且它们将按照codecs.open声明的方式进行编码,因此代码尝试双重编码。另外,'\u270c'不是CP932支持的字符,因此在任何情况下都不能写入CP932文件

假设Python 3以特定编码编写Unicode字符串text,请使用:

with open('output.txt','w',encoding='cp932') as f:
    f.write(text)

codecs是一个较旧的模块,不需要。在Python2中,io.open是与Python3的open等效的后端口,并且Python3也支持它,以实现可移植性

\是cp932中的功能符号。因此,如果要对\进行编码,应该使用\\
就你而言:

import codecs
mytext = '\\u270c'
with codecs.open(path,mode='w',encoding='cp932') as f:
    mytext.encode('cp932',"ignore")
    f.write(mytext)
exit()

相关问题 更多 >

    热门问题