2009-09-17 71 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