Verwendung von Python 3.4 ich die folgende Fehlermeldung erhalten, wenn ein Byte-Typ mit utf-32UnicodeDecodeError auf Byte-Typ
Traceback (most recent call last):
File "c:.\SharqBot.py", line 1130, in <module>
fullR=s.recv(1024).decode('utf-32').split('\r\n')
UnicodeDecodeError: 'utf-32-le' codec can't decode bytes in position 0-3: codepoint not in range(0x110000)
und die folgenden zu entschlüsseln versuchen, wenn es in utf-16 zu entschlüsseln versucht
File "c:.\SharqBot.py", line 1128, in <module>
fullR=s.recv(1024).decode('utf-16').split('\r\n')
UnicodeDecodeError: 'utf-16-le' codec can't decode byte 0x0a in position 374: truncated data
Wenn ich mit utf-8 entschlüsseln gibt es keinen Fehler. s ist eine Buchse mit dem Zucken IRC-Server irc.chat.twitch.tv verbunden auf Port 80.
Er erhält die folgenden:
b':tmi.twitch.tv 001 absolutelyabot :Welcome, GLHF!\r\n:tmi.twitch.tv 002 absolutelyabot :Your host is tmi.twitch.tv\r\n:tmi.twitch.tv 003 absolutelyabot :This server is rather new\r\n:tmi.twitch.tv 004 absolutelyabot :-\r\n:tmi.twitch.tv 375 absolutelyabot :-\r\n:tmi.twitch.tv 372 absolutelyabot :You are in a maze of twisty passages, all alike.\r\n:tmi.twitch.tv 376 absolutelyabot :>\r\n'
Bin ich etwas falsch zu machen, wenn sie versuchen zu utf 16 zu dekodieren und 32? Der Grund, warum ich utf-32 benutzen möchte, ist, dass gelegentlich jemand ein Zeichen sendet, das nicht in utf-8 ist und ich das empfangen möchte, anstatt einen Fehler zu erzeugen, weil utf-8 dieses Zeichen nicht unterstützt. Danke für jede Hilfe.
Verwenden Sie 'decode ('utf-8', errors = 'replace')' zum Beispiel. –
Ich versuche nicht, den Fehler alle zusammen zu vermeiden, ich versuche, die Zeichen zu erhalten, die in utf-8 nicht unterstützt werden. –
So können Sie versuchen, die ganze Zeile mit UTF-8 zu dekodieren. Wenn eine Ausnahme ausgelöst wird, * versuche nur einen alternativen Zeichensatz *. Ich bezweifle, IRC-Protokoll würde UTF-16, 32 * je * erlauben, wegen der eingebetteten NULs –