Восстановление символов Windows-1252 из данных, неправильно сохраненных как UTF-8
Я имею дело с данными, которые были отобраны с использованием Java HtmlUnit. На веб-странице использовалась кодировка Windows-1252, но ответ был получен так, как если бы страница была закодирована как UTF-8 (т. Е. При вызове getContentAsString для объекта HtmlUnit WebResponse была указана кодировка UTF-8, а не откладывание на кодировку, указанную на сервере). ответ). Есть ли способ отменить этот процесс, чтобы восстановить исходные данные Windows-1252 из неправильно обозначенных символьных данных UTF-8?
Большинство других вопросов по этой теме касаются определения типа файла или преобразования из одного типа потока в другой для символов, правильно закодированных в первую очередь. Это не тот случай, здесь. Я не верю, что такие утилиты, как iconv, будут работать, потому что они ожидают, что потоки будут правильно сохранены в исходной кодировке.
1 ответ
Возможно нет. Если текст в кодировке Windows-1252 будет ошибочно принят за UTF-8, все кодовые точки, отличные от ASCII, будут повреждены из-за того, как UTF-8 обрабатывает эти кодовые точки. Только если вам очень повезло, и все не-ASCII кодовые точки представлены парами или тройками, которые по чистой случайности преобразуются в реальные кодовые точки Unicode, вы можете полностью изменить процесс.
Но тебе не повезло.