如何在Python中将unicode字符转换为各自的符号?

时间:2017-03-09 09:09:27

标签: python unicode

我有一个文本文件,其中包含以下格式的unicode字符:

\u0935\u094d\u0926\u094d\u0928\u094d\u0935\u094d\u0926\

我想以下列格式将其转换为devnagri字符:

वर्जनरूपमिति दर्शित्म् । स पूरुषः अमृतत्वाय कल्पते व्द्न्व्द

然后将其写入文件。 目前我的代码

encoded = x.encode('utf-8')
print (encoded.decode('unicode-escape'))

可以在终端中打印devnagri字符。但是,当我尝试使用

将其写入文件时
text = 'target:'+encoded.decode('unicode-escape')+'\n'
fileid.write(text)

我收到以下错误。

'ascii' codec can't encode characters in position 7-18: ordinal not in range(128)

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

如果您使用的是Python 2,那么因为使用.decode('unicode-escape')后您拥有unicode个对象而fileid.write()只接受字符串对象。然后,Python尝试使用不包含devnagri字符的ASCII编码将对象转换为字节字符串。此转换会导致异常。

在将unicode字符串写入文件之前,需要手动将其转换为字节字符串:

fileid.write(text.encode('utf-8'))

这里我假设你想要UTF-8编码。如果要将字符保存为其他编码,请将'utf-8'替换为该编码的名称。

在Python 3中,您可以在打开文件时设置使用的编码:

fileid = open('compare.txt', 'a', encoding='utf-8')

然后额外的.encode('utf-8')不是必需的。