当前位置:  开发笔记 > 编程语言 > 正文

无法在Python 2.4中解码unicode字符串

如何解决《无法在Python2.4中解码unicode字符串》经验,为你挑选了2个好方法。

这是在python 2.4中.这是我的情况.我从一个数据库中提取一个字符串,它包含一个umlauted'o'(\ xf6).此时,如果我运行type(value),则返回str.然后我尝试运行.decode('utf-8'),我得到一个错误('utf8'编解码器无法解码1-4位的字节).

真的,我的目标就是成功使类型(值)返回unicode.我发现一个早期的问题 有一些有用的信息,但是所选答案中的例子似乎并不适用于我.我在这里做错了吗?

这是一些重现的代码:

Name = 'w\xc3\xb6rner'.decode('utf-8')
file.write('Name: %s - %s\n' %(Name, type(Name)))

我从来没有真正进入write语句,因为它在第一个语句中失败了.

谢谢您的帮助.

编辑:

我验证了DB的字符集是utf8.因此,在我的代码重现中,我将'\ xf6'更改为'\ xc3\xb6',但仍然会发生故障.'utf-8'和'utf8'之间有区别吗?

使用编解码器写入文件的提示很方便(我肯定会使用它),但在这种情况下,我只是为了调试目的而写入日志文件.



1> Jiri..:

您的字符串不是 UTF8编码.如果要将字符串"解码"为unicode,则字符串必须采用参数指定的编码.我试过这个并且完美地工作:

print 'w\xf6rner'.decode('cp1250')

编辑

要将unicode字符串写入文件,您可以使用编解码器模块:

import codecs
f = codecs.open("yourfile.txt", "w", "utf8")
f.write( ... )

指定输入/输出的编码并在整个代码中使用"unicode"字符串非常方便,而无需编写不同的编码.



2> vartec..:

它显然是1字节编码.UTF-8中的'ö'是'\ xc3\xb6'.

编码可能是:

ISO-8859-1

ISO-8859-2

ISO-8859-13

ISO-8859-15

赢-1250

赢-1252

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有