it-swarm.com.de

Wie konvertiert man einen String nach utf-8 in Python

Ich habe einen Browser, der utf-8-Zeichen an meinen Python Server sendet, aber wenn ich ihn aus der Abfragezeichenfolge abrufe, ist die Codierung, die Python zurückgibt, ASCII Wie kann ich den einfachen String in utf-8 konvertieren?

HINWEIS: Die vom Web übergebene Zeichenfolge ist bereits UTF-8-codiert. Ich möchte nur Python als UTF-8 und nicht als ASCII behandeln.

174
Bin Chen
>>> plain_string = "Hi!"
>>> unicode_string = u"Hi!"
>>> type(plain_string), type(unicode_string)
(<type 'str'>, <type 'unicode'>)

^ Dies ist der Unterschied zwischen einer Byte-Zeichenfolge (plain_string) und einer Unicode-Zeichenfolge.

>>> s = "Hello!"
>>> u = unicode(s, "utf-8")

^ Konvertieren in Unicode und Angeben der Codierung.

240
user225312

Wenn die obigen Methoden nicht funktionieren, können Sie Python) auch anweisen, Teile eines Strings zu ignorieren, die nicht in utf-8 konvertiert werden können:

stringnamehere.decode('utf-8', 'ignore')
66
duhaime

Könnte ein bisschen übertrieben sein, aber wenn ich mit ASCII und Unicode in denselben Dateien arbeite, kann das Wiederholen des Dekodierens ein Problem sein. Ich verwende Folgendes:

def make_unicode(input):
    if type(input) != unicode:
        input =  input.decode('utf-8')
        return input
    else:
        return input
20
Blueswannabe

Fügen Sie die folgende Zeile oben in Ihre .py-Datei ein:

# -*- coding: utf-8 -*-

mit dieser Option können Sie Zeichenfolgen direkt in Ihrem Skript codieren:

utfstr = "ボールト"
14
Ken

Wenn ich Sie richtig verstehe, haben Sie eine UTF-8-codierte Byte-Zeichenfolge in Ihrem Code.

Das Konvertieren einer Byte-Zeichenfolge in eine Unicode-Zeichenfolge wird als Decodierung bezeichnet (Unicode -> Byte-Zeichenfolge ist Codierung).

Verwenden Sie dazu die Funktion nicode oder die Methode Decode . Entweder:

unicodestr = unicode(bytestr, encoding)
unicodestr = unicode(bytestr, "utf-8")

Oder:

unicodestr = bytestr.decode(encoding)
unicodestr = bytestr.decode("utf-8")
13
codeape
city = 'Ribeir\xc3\xa3o Preto'
print city.decode('cp1252').encode('utf-8')
8
Willem

In Python 3.6 verfügen sie nicht über eine integrierte unicode () -Methode. Zeichenfolgen werden standardmäßig bereits als Unicode gespeichert, und es ist keine Konvertierung erforderlich. Beispiel:

my_str = "\u221a25"
print(my_str)
>>> √25
6
Zld Productions

Übersetzen Sie mit ord () und unichar (). Jedem Unicode-Zeichen ist eine Nummer zugeordnet, so etwas wie ein Index. Also Python haben ein paar Methoden, um zwischen einem Buchstaben und seiner Nummer zu übersetzen. Nachteil ist ein ñ Beispiel. Hoffe, es kann helfen.

>>> C = 'ñ'
>>> U = C.decode('utf8')
>>> U
u'\xf1'
>>> ord(U)
241
>>> unichr(241)
u'\xf1'
>>> print unichr(241).encode('utf8')
ñ
3
Joe9008