Как был плохо закодирован юникод этой строки JSON, и как я могу обратить его? - PullRequest
0 голосов
/ 05 апреля 2019

Я почти уверен, что у меня происходит некоторое двойное кодирование, и я не могу обернуться вокруг фактического маршрута, которым он был закодирован, или является ли он обратимым.

Мой файл JSON содержит строку"R\\u00c3\\u0083\\u00c2\\u00b6yksopp", который предположительно равен Röyksopp, но отображает как Röyksopp.

HEX для UTF-8 ö равен 0xC3 0xB6, что является первым и последним изчетыре сбежавших персонажа.

1 Ответ

2 голосов
/ 05 апреля 2019

Похоже, вы интерпретировали строку UTF-8 как Latin-1, затем закодировали ее как UTF-8, снова интерпретировали ее как Latin-1 и закодировали ее в JSON. Вот исправление в Python:

>>>> s
'"R\\u00c3\\u0083\\u00c2\\u00b6yksopp"'
>>>> json.loads(s)
'RÃ\x83¶yksopp'
>>>> json.loads(s).encode('latin1')
b'R\xc3\x83\xc2\xb6yksopp'
>>>> json.loads(s).encode('latin1').decode('utf-8')
'Röyksopp'
>>>> json.loads(s).encode('latin1').decode('utf-8').encode('latin1')
b'R\xc3\xb6yksopp'
>>>> json.loads(s).encode('latin1').decode('utf-8').encode('latin1').decode('utf-8')
'Röyksopp'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...