UnicodeDecodeError auf byte-Typ

Mit Python 3.4 ich bekomme die folgende Fehlermeldung, wenn Sie versuchen zu entschlüsseln byte-Typ unter Verwendung von utf-32

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, wenn Sie versuchen, Sie zu entschlüsseln, die in utf-16

  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 decode utf-8 gibt es keine Fehler. s ist ein socket verbunden twitch-IRC-server irc.chat.twitch.tv auf port 80.

Erhält er 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'

Mache ich etwas falsch, wenn Sie versuchen zu entschlüsseln, um utf-16 und 32? Der Grund, warum ich möchte, um die Verwendung von utf-32 ist, weil gelegentlich jemand sendet ein Zeichen, das nicht im utf-8 und ich möchte in der Lage sein, um erhalten, dass, anstatt es wirft einen Fehler, da utf-8 nicht unterstützt, der Charakter.
Vielen Dank für jede Hilfe.

  • verwenden decode('utf-8', errors='replace') zum Beispiel.
  • Ich versuche nicht, den Fehler zu vermeiden alle zusammen, ich bin versucht zu erhalten, die Zeichen, die nicht unterstützt, die in utf-8.
  • So können Sie versuchen zu entschlüsseln, die ganze Zeile mit UTF-8. Wenn eine Ausnahme ausgelöst wird, erst dann versuchen Sie einen alternativen Zeichensatz. Ich bezweifle, IRC protocl erlauben würde, UTF-16, 32 immer, weil der embedded-NULs
  • "Wenn ich decode utf-8-es gibt keine Fehler". Also, warum Sie denken, UTF-16 oder UTF-32 funktionieren sollte??
InformationsquelleAutor Shariq Ali | 2016-03-21
Schreibe einen Kommentar