Ich habe einen Code, so konvertieren 0x8A5E in utf16 respectively), das Ergebnis war:Wie CJK Extention B in QLineEdit von Python3-PyQt4 auf utf-8 bis zur Verarbeitung mit regex
\u654f\u611f\u8a5e
OK
aber wenn I input "詞" (0x8A5E, 0xD840 0xDC37, 0xD840 0xDC81, 0xD840 0xDC4D in utf16), in dem es gab 3 Zeichen von CJK Extention B Bereich. Das Ergebnis, das ist nicht zu erwarten ist:
\u8a5e\ud840\udc37\ud840\udc81\ud840\udc4d
error
wie kann ich mit der Umstellung auf utf-8 diese CJK-Zeichen verarbeitet, um suitabliy mit Wieder von Python3 verarbeitet werden?
P.S.
der Wert von sys.maxunicode ist 1.114.111, könnte es UCS-4 sein. Daher denke ich, dass die Frage der gleiche wie python regex fails to match a specific Unicode > 2 hex values
ein anderer Code nicht zu sein scheint:
#!/usr/bin/env python3 #-*-coding:utf-8-*- import re CJKBlock = re.compile("^[一-鿌㐀-䶵\U00020000-\U0002A6D6]+$") #CJK ext B print(CJKBlock.search('詞'))
kehrt <_sre.SRE_Match object; span=(0, 4), match='詞'>
#expected Ergebnis.
Ich habe sogar
self.lineEdit.setText("詞")
innerhalb__init__
Funktion der Fensterklasse und ausgeführt es zeigt das Wort in LineEdit angemessen, aber wenn ich Eingabe gedrückt, war das Ergebnis immer noch „Fehler“Version:
- Python3.4.3
- Qt-Version: 4.8.6
- PyQt Version: 4.10.4.
Warum verwenden Sie einen Narrow-Build von Python-3.4? Seit [PEP-0393] (http://www.python.org/dev/peps/pep-0393/) ist das kein Vorteil mehr.Ihr Code schlägt fehl, da die Nicht-BMP-Zeichen als Ersatzpaare dargestellt werden müssen. Wenn Sie zu einem Wide-Build von Python-3.4 wechseln, wird dieses Problem verschwinden. – ekhumoro
Re. @ekhumoro der zurückgegebene Wert von sys.maxunicode ist 1114111, möglicherweise in UCS-4. –
#!/Usr/bin/env python3 # - * - Codierung: utf-8 - * - Import re; CJKBlock = re.compile ("^ [一 -鿌 㐀 - 䶵 \ U00020000- \ U0002A6D6] + $"); #CJK ext B drucken (CJKBlock.search ('詞')); gibt das Objekt <_sre.SRE_Match zurück; span = (0, 4), Übereinstimmung = '詞'> # erwartetes Ergebnis. aber die Zeichenfolge von QLineEdit schlägt das nicht vor. Vielleicht ist es das Problem von Python3-PyQt4? –