Как определить кодовую страницу файла (к которому применено преобразование кодовой страницы) - PullRequest
2 голосов
/ 05 августа 2011

Например, если я знаю, что ć должно быть ć, как я могу найти преобразование кодовой страницы, которое произошло там?

Было бы неплохо, если бы для этого был онлайн-сайт, но любой инструмент справился бы с этой задачей. Конечная цель - отменить преобразование кодовой страницы (с помощью iconv или перекодировать , но инструменты не важны, я возьму все, что работает, включая скрипты Python)

EDIT:

Не могли бы вы быть немного более многословным? Вы наверняка знаете, что какая-то подстрока должна быть точно. Или знаете только язык? Или просто гадать? И преобразование, которое было применено, было ли оно правильным (то есть оно действительно в другой кодировке)? Или это было одиночное преобразование из кодировки X в Y, но текст был на самом деле в Z, так что теперь это неправильно? Или это была серия таких преобразований?

На самом деле, в идеале я ищу инструмент, который сообщит мне, что произошло (или что возможно произошло), чтобы я мог попытаться преобразовать его обратно в правильное кодирование.

То, что (я предполагаю) произошло в проблеме, которую я сейчас пытаюсь исправить, это то, что описано в этом ответе - текстовый файл utf-8 был открыт как текстовый файл ascii, а затем экспортирован как csv.

Ответы [ 2 ]

3 голосов
/ 08 августа 2011

Обычно это чрезвычайно сложно сделать. Основная проблема заключается в том, что все основанные на ascii кодировки (iso-8859- *, dos и windows codepages) используют один и тот же диапазон кодовых точек, поэтому ни одна конкретная кодовая точка или набор кодовых точек не скажут вам, в какой кодовой странице находится текст.

Есть одна кодировка, которую легко узнать. Если это допустимый UTF-8, то почти наверняка нет ни iso-8859- *, ни какой-либо кодовой страницы Windows, потому что, хотя в них действительны все байтовые значения, вероятность появления в них правильной многобайтовой последовательности utf-8 почти ноль.

Чем это зависит от того, какие дополнительные кодировки могут быть задействованы. Допустимая последовательность в Shift-JIS или Big-5 также вряд ли будет действительной в любой другой кодировке, в то время как для разбора аналогичных кодировок, таких как cp1250 и iso-8859-2, требуется проверка орфографии слов, которые содержат 3 или около того символов, которые различаются и видны. каким образом вы получите меньше ошибок.

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

0 голосов
/ 13 августа 2011

Подобные инструменты были довольно популярны десять лет назад.Но теперь довольно редко можно увидеть поврежденный текст.

Как я знаю, это можно эффективно сделать, по крайней мере, с конкретным языком.Таким образом, если вы предложите русский язык для текста, вы можете собрать некоторую статистическую информацию о символах или небольших группах символов, используя множество образцов текста.Например, в английском языке «th» комбинация появляется чаще, чем «ht».

Таким образом, вы можете переставлять различные комбинации кодирования и выбирать ту, которая имеет более вероятную текстовую статистику.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...