将unicode字符串转换为utf8

2024-10-01 07:49:41 发布

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

首先,我知道在Python2.x中有很多关于字符串的en/de编码的问题,但是我似乎找不到解决这个问题的方法。在

我有一个unicode字符串,它包含字母č,它表示为\u00c4\u008d

如果我在Python控制台中编写

>>> a = u"\u00c4\u008d"
>>> print a

我打印出两个奇怪的字符,而不是č,这可能是因为该字符串的实际编码应该是UTF-8。因此,我尝试使用.decode("utf-8"),但为此我得到了标准UnicodeEncodeError。在

你知道我如何让Python在控制台中将这个字符串打印成č?在

非常感谢


Tags: 方法字符串编码字母unicodede字符utf
2条回答

在与python进行了一个多小时的斗争之后,我决定寻找另一种语言的解决方案。这就是我在C#实现目标的方法:

var s = "\u00c4\u008d";
var newS = Encoding.UTF8.GetString(Encoding.Default.GetBytes(s));
File.WriteAllText(@"D:\tmp\test.txt", newS, Encoding.UTF8);

终于来了!文件现在包含č。在

因此,我受到了C#中这种方法的启发,并设法在Python中提出了以下(似乎)等效的解决方案:

^{pr2}$

我不知道这个解决方案有多好,但它似乎对我的情况有效。在

č不是由u'\u00c4\u008d'表示的。这两个十六进制值是UTF-8编码的值,因此应该以'\xc4\x8d'的形式在字节字符串中写入。示例:

>>> s = '\xc4\x8d'
>>> s.decode('utf8')
u'\u010d'
>>> print(s.decode('utf8'))
č

注意:您的终端必须配置支持字符正确打印的编码,否则您将看到UnicodeEncodeError。在

如果出于某种原因,您有一个错误解码的Unicode字符串,那么可以利用Unicode的前256个代码点与latin1编码相关的事实,并修复它:

^{pr2}$

如果您有一个错误解码的Unicode字符串,您应该显示您拥有的文件或读取它的代码,并解决这个问题。在

相关问题 更多 >