/ / dekodowanie shift-jis: „nielegalna sekwencja wielobajtowa” - python, kodowanie, szesnastkowe, dekodowanie, przesunięcie-jis

dekodowanie shift-jis: "niedozwolona sekwencja wielobajtowa" - python, kodowanie, hex, dekodowanie, shift-jis

Próbuję zdekodować zakodowany ciąg shift-jis, taki jak poniżej:

string.decode("shift-jis").encode("utf-8")

aby móc go zobaczyć w moim programie.

Gdy natrafiam na 2 znaki shift-jis, na hex "0x87 0x54" i "0x87 0x55", pojawia się ten błąd:

UnicodeDecodeError: "shift_jis" codec can"t decode bytes in position 12-13: illegal multibyte sequence

Ale jestem pewien, że są poprawnymi znakami shift-jis: http://www.rikai.com/library/kanjitables/kanji_codes.sjis.shtml

Zauważyłem również, że te postacie pojawiają się jakoczarne pola w moim edytorze tekstu shift-jis, co oznacza, że ​​nie są rozpoznawane. Więc jest coś wyjątkowego w tych dwóch znakach, które spowodowały, że mój edytor i dekoder Pythona zawiodły.

(przepraszam, nie mogłem zamieścić przykładowego łańcucha, ponieważgdy te znaki są obecne, nie są one dodawane do schowka od tego momentu, a także są automatycznie konwertowane na unicode.

Odpowiedzi:

8 dla odpowiedzi № 1

Istnieje wiele wersji Shift JIS. The shift_jis kodek jest JIS X 0208, podczas gdy ta tabela jest JIS X 0213, odpowiadający shift_jisx0213 kodek.

>>> u"⑲⑳Ⅰ".encode("shift_jisx0213")
"x87Rx87Sx87T"