0
我已經決定與CP866去避免的unicode 65001噩夢顯示西里爾符號(BUG,補丁,等等......請),所以在我的程序每個輸出字符串編碼爲CP866無法在詛咒
# coding=utf-8
print 'Кабздец'.decode('utf-8').encode('cp866')
這一行輸出正確的字符串到Windows控制檯,當然如果我在運行我的腳本之前設置chcp 866。
但是,我不能使詛咒顯示在相同的編碼。
stdscr.addstr("Кабздец".decode('utf-8').encode('cp866'))
這會輸出垃圾。 Curses doc說我必須設置區域設置。所以我試圖使用
locale.setlocale(locale.LC_ALL, '')
這有點改變,仍然是垃圾,我猜是因爲我的區域設置是CP1251。 locale.getpreferredencoding()
返回cp1251
。
問題是如何使curses正確編碼字符串。
我也試過
locale.setlocale(locale.LC_ALL, 'rus')
將只呈現不同的符號,不正確的。
nm,那看起來不是這個......這是一個棘手的問題。您是否嘗試過使用文檔中示例中的方法,並在設置區域設置後僅使用默認編碼? – 2012-03-27 14:14:24
我通過在程序中將locale設置爲'rus'找到了一些解決方案,在兩個控制檯中使用chcp和程序將代碼頁從866更改爲1251。我想這是我能做到的最好的。 – Pablo 2012-03-27 14:23:03