Problèmes d'encodage dans PyQt
Question
Mon programme stocke l'index de fichier dans un fichier compressé par cPickle. Il existe des noms de fichiers non anglais. Quand je viens de faire cela
print f [0]
où f [0] est "\ xc2 \ xe8 \ xf1 \ xee \ xea \ xee \ xf1 \ xed \ xfb \ xe9 \ xe3 \ xee \ xe4" (& & # 1042; & # 1080; & # 1089; & # 1086; & # 1082; & # 1086; & # 1089; & # 1085; & # 1099; & # 1081; & # 1075; & # 1086 ; & # 1076; "en mode normal), il imprime la chaîne de manière appropriée & # 8212; en russe.
Lorsque le programme ajoute manuellement la chaîne u '& # 1042; & # 1080; & # 1089; & # 1086; & # 1086; & # 1086; & # 1089; & # 1085; & # 1099; & ### 1081; & # 1075; & # 1086; & # 1076; ' sur QTreeView, tout va bien.
Mais lorsque le programme place cette chaîne (" \ xe3 \ xee \ xe4 \ "etc.) directement d'un fichier non-pické à QTreeView, cela devient comme ça:
texte de remplacement http://img170.imageshack.us/img170/9226/encoding .png
Y a-t-il un moyen de résoudre ce problème?
La solution
Avez-vous exécuté decode
sur la chaîne non triée en utilisant le codage correct ("cp1251" d'après l'apparence de celle-ci)? Sinon, vous devez vous assurer que vous transmettez une chaîne Unicode à l'interface graphique.