2012-03-27 9 views
0

Ich habe beschlossen, mit cp866 zu gehen Unicode-65001 Alptraum zu vermeiden (Bug, Patches, etc ... Bitte), so dass jede Ausgabezeichenfolge in meinem Programm ist in cp866 codiertkann nicht in Flüche Kyrillisch Symbole angezeigt werden

# coding=utf-8 
print 'Кабздец'.decode('utf-8').encode('cp866') 

Diese Zeile Ausgabe korrekte Zeichenfolge in Windows-Konsole, natürlich, wenn ich Chcp 866 vor dem Ausführen meines Skripts gesetzt.

Ich bin jedoch nicht in der Lage, Flüche in der gleichen Codierung anzuzeigen.

stdscr.addstr("Кабздец".decode('utf-8').encode('cp866')) 

Dies wird Müll ausgeben. Curses doc sagt, dass ich das Gebietsschema einstellen muss. Also habe ich versucht zu verwenden

locale.setlocale(locale.LC_ALL, '') 

Das hat wenig Veränderung und immer noch Müll, ich denke, weil mein Gebietsschema CP1251 ist. locale.getpreferredencoding() gibt cp1251 zurück.

Frage ist, wie man Flüche zu codieren Strings richtig machen.

Ich habe auch versucht,

locale.setlocale(locale.LC_ALL, 'rus') 

, die verschiedene Symbole nur machen wird, nicht richtigen sind.

Antwort

0

Haben Sie versucht, mit dem Attribut altcharacterset auf dem Aufruf addstr noch herumzuspielen?

+0

nm, das sieht nicht so aus ... das ist ein kniffliges Problem. Haben Sie versucht, nur die Methode zu verwenden, die in den Beispielen in den Dokumenten enthalten ist, und nur die Standardcodierung zu verwenden, nachdem Sie das Gebietsschema festgelegt haben? –

+0

Ich fand eine Lösung, indem ich das Gebietsschema im Programm auf 'rus' setze, die Codepage in beiden Konsolen mit Hilfe von chcp und im Programm von 866 auf 1251 änderte. Ich denke, das ist das Beste, was ich erreichen kann. – Pablo

Verwandte Themen