2009-09-17 73 views
0

我的程序存储由cPickle打包的文件中的文件索引。有非英文文件名。 当我只是这样做PyQt中的编码问题

print f [0] 

其中,f [0]是 “\ XC2 \ xe8 \ XF1 \ XEE \ XEA \ XEE \ XF1 \固定的\ XFB \ xe9 \ XE3 \ XEE \ XE4”(“Високосный год“在正常视图中),它会以适当的方式打印字符串 - 俄语。

当程序手动将字符串u'Високосныйгод'添加到QTreeView时,一切都很好。

但是当程序把这个字符串( “\ XE3 \ XEE \ XE4” 等),直接从拆封文件QTreeView则,就变成这样:

alt text http://img170.imageshack.us/img170/9226/encoding.png

有什么办法来解决那?

+0

我对我的回答添加了评论。 – 2009-09-17 10:38:04

回答

2

你使用正确的编码(看起来是“cp1251”)在不带螺纹的字符串上运行decode吗?如果没有,你需要这样做,以确保你将一个Unicode字符串传递给GUI。

+0

当我试图用cp1251,ascii或任何其他编码解码字符串时,出现错误“UnicodeEncodeError:'ascii'编解码器无法对位置0-9中的字符进行编码:序号不在范围内(128)” – 2009-09-17 10:17:09

+0

不要使用ASCII,因为您的字符串明显包含非ASCII字符。使用例如“\ xe3 \ xee \ xe4”.decode(“cp1251”),这会导致显示“год”。 您不能使用随机编码 - 它必须是将字节“\ xe3 \ xee \ xe4”转换为Unicode“год”的正确编码。 – 2009-09-17 10:27:23