Unicode的转换

时间:2011-04-18 10:30:37

标签: python

我是python的新手。

我在泰米尔语中有一个unicode。

当我使用sys.getdefaultencoding()时,我得到输出为“Cp1252”

我的要求是,当我使用text = testString.decode(“utf-8”)时,我收到错误“UnicodeEncodeError:'charmap'编解码器无法编码位置0-8中的字符:字符映射到未定义”< / p>

3 个答案:

答案 0 :(得分:3)

  

当我使用的时候   sys.getdefaultencoding()我得到了   输出为“Cp1252”

两条评论:(1)它是“cp1252”,而不是“Cp1252”。不要从内存中输入内容。 (2)任何引起sys.getdefaultencoding()生成“cp1252”的人都应该被礼貌地告知这不是一个好主意。

至于其余部分,让我猜一下。您有一个unicode对象,其中包含泰米尔语中的一些文本。你错误地尝试解码它。解码意味着从str对象转换为unicode对象。遗憾的是,你没有str个对象,更不幸的是你被Python 2中极少数的awkish / perlish wart之一反弹:它试图通过编码你的{str对象使用系统默认编码的{1}}字符串。如果是'ascii'或'cp1252',编码将失败。这就是为什么你得到Unicode * En * codeError而不是Unicode * De * codeError。

简短回答:做unicode,如果那是你真正想做的事。否则请解释您想要做的事情,并向我们展示text = testString.encode("utf-8")的结果。

答案 1 :(得分:0)

将其添加为第1行代码

# -*- coding: utf-8 -*- 

稍后在你的代码中......

text = unicode(testString,“UTF-8”)

答案 2 :(得分:0)

你需要知道哪个字符编码是testString使用的。如果不是utf8,使用decode('utf8')时会发生错误。