0

我需要制作 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显示错误。

有没有办法解决这个问题??

4

2 回答 2

0

\是 cp932 中的功能符号。所以,如果你想编码\,你应该\\
在你的情况下使用:

import codecs
mytext = '\\u270c'
with codecs.open(path,mode='w',encoding='cp932') as f:
    mytext.encode('cp932',"ignore")
    f.write(mytext)
exit()
于 2020-02-07T08:35:05.850 回答
0

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

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

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

codecs是一个较旧的模块,不需要。在 Python 2 中,io.open它是 Python 3 的后向移植版本,open并且也受 Python 3 支持,以实现可移植性。

于 2020-02-09T00:03:05.723 回答