2016-07-21 15 views
0

Ich schreibe ein Programm, das Bildschirmnamen und Tweets von Twitter in eine TXT-Datei holt. Einige Bildschirmnamen enthalten spezielle Unicode-Zeichen wie ♡. In meinem Bash-Terminal erscheinen diese Zeichen als leere Box. Mein sql schlägt fehl, wenn ich versuche, dieses Zeichen einzufügen, und sagt mir, dass es ein unübersetzbares Zeichen enthält. Gibt es eine Möglichkeit, nur Sonderzeichen in Python in ihre hexadezimale Form zu konvertieren? Ich würde auch gerne nur mitPython zum Konvertieren spezieller Unicode-Zeichen (wie ♡) in ihre Hexadezimal-Literale in einer Zeichenfolge (wie 0x2661)

Idealer diese Sonderzeichen ersetzen „screen ♡“ umwandeln würde zu „screenName0x2661“ oder ersetzen Sie einfach Sonderzeichen zu so etwas wie „screen # REPLACE #“

Dank!

+0

Versuch URL kodieren Methoden ...? – anishsane

Antwort

0

Sie erreichen dies mit der encode Methode, erklärt here. Aus der Dokumentation:

Eine weitere wichtige Methode ist .encode ([Kodierung], [Fehler = 'strengen']), , die eine 8-Bit-String-Version des Unicode-String zurückgibt, codiert in der gewünschten Codierung . Der Fehlerparameter ist der gleiche wie der Parameter des Unicode() - Konstruktors, mit einer zusätzlichen Möglichkeit; Ebenso wie "strikt", "ignorieren" und "ersetzen" können Sie auch "xmlcharrefreplace" übergeben, das die Zeichenreferenzen von XML verwendet. Das folgende Beispiel zeigt die verschiedenen Ergebnisse:

>>> u = unichr(40960) + u'abcd' + unichr(1972) 
>>> u.encode('utf-8') '\xea\x80\x80abcd\xde\xb4' 
>>> u.encode('ascii')      Traceback (most recent call last): 
    ... UnicodeEncodeError: 'ascii' codec can't encode character u'\ua000' in position 0: ordinal not in range(128) 
>>> u.encode('ascii', 'ignore') 'abcd' 
>>> u.encode('ascii', 'replace') '?abcd?' 
>>> u.encode('ascii', 'xmlcharrefreplace') 'ꀀabcd޴' 
+0

Ich habe die u vor meinen Zitaten vermisst. Wenn Sie es als 'ScreenName' anstelle von 'ScreenName' verwenden, wird die Kodierung wirksam. Vielen Dank! – mday99