2010-11-25 16 views
8

İçeren Değişkeni Unicode Yapın Ulusal karakterler içeren (iso-8859-2) verileri içeren QPlainTextEdit alanım var.QString

tmp = self.ui.field.toPlainText() (QString type) 

yapmam Ne zaman:

tmp = unicode(tmp, 'iso-8859-2') 

ben soru işaretleri yerine ulusal karakterleri olsun. QPlainTextEdit alanındaki verileri nasıl unicode'a dönüştürebilirim?

+0

afaik 'görüyor. – Philipp

+0

İpucu için teşekkürler - Daha sonra deneyeceğim ve geri bildirim yapacağım. Modyfing post için BTW. – rapid

cevap

3

QPlainTextEdit.toPlainText() öğesi, UTF-16 olması gereken QString değerini döndürürken, unicode() yapıcısı bir bayt dizisi beklediği söylenir. Aşağıda küçük bir örnek:

field.toPlainText: Test OA это китайский: 最主要 的

UTF-16: Test OA это китайский

tmp = self.field.toPlainText() 
print 'field.toPlainText: ', tmp 

codec0 = QtCore.QTextCodec.codecForName("UTF-16"); 
codec1 = QtCore.QTextCodec.codecForName("ISO 8859-2"); 

print 'UTF-16: ', unicode(codec0.fromUnicode(tmp), 'UTF-16') 
print 'ISO 8859-2: ', unicode(codec1.fromUnicode(tmp), 'ISO 8859-2') 

bu kod çıkışı takip üretir : 12 12

ISO 8859-2: test ÖÄ ??? ?????????: ???? Bu yardımcı olur

umut, bunu deneyebilirsiniz böylece QString`, UTF-16 kullanan

+0

Çalışıyor. Ama başka bir sorum var - tmp değişkeninin (iso 8859-2) kodlanmış formda gönderilmesi gerektiğini varsayalım. B64encode (tmp) ve daha sonra b64decode (tmp) ulusal karakterlerle uygun şekilde çalışır mı? Benim için çok fazla kodlama/kod çözme gibi görünüyor ama buna ihtiyacım var ve her zaman acı verici bir deneyim oldu. – rapid

+0

hmm .. Eğer çalışıyorsanız protokoller \ medya ile dokulu veri ile başa çıkmak için tasarlanmıştır eğer base64 kodlaması kullanmanız gerekir. Orada başka yolların olduğunu düşünmüyorum –

İlgili konular