Как восстановить документ, который был отправлен через модуль кодировки символов? - PullRequest
1 голос
/ 13 сентября 2009

До недавнего времени в моем блоге использовались несоответствующие настройки кодировки символов для PHP и MySQL. С тех пор я исправил основную проблему, но у меня все еще есть тонна текста, заполненная мусором. Например, ï стало ï.

Существует ли программное обеспечение, которое может использовать распознавание образов и статистику для автоматического обнаружения поврежденного текста и его исправления?

Например, похоже, что U+00EF (UTF-8 0xC3 0xAF) стало U+00C3 U+00AF (UTF-8 0xC3 0x83 0xC2 0xAF). Другими словами, шестнадцатеричное кодирование использовалось для кодовых точек. Этот шаблон произошел с (на первый взгляд случайными) не-ASCII символами на моем сайте.

Ответы [ 2 ]

1 голос
/ 15 сентября 2009

Пример, который вы приводите, выглядит как старый добрый utf8-over-latin1. Вы можете быстро попробовать запрос вроде:

select convert(convert(the_problem_column using binary) using utf8)

чтобы выяснить, устраняет ли это проблему.

Преобразование кодирования по этим линиям должно работать до тех пор, пока все ваши данные прошли одну и ту же последовательность преобразований кодирования, и пока ни одно из этих преобразований не было с потерями - вы просто обращаете эффект некоторых из этих преобразований вспять ,

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

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

0 голосов
/ 13 сентября 2009

Вы, вероятно, хотите посмотреть на регулярные выражения, http://en.wikipedia.org/wiki/Regular_expression. Используя это, вы можете найти и заменить соответствующие символы.

Вот документация по регулярным выражениям MySQL, http://dev.mysql.com/doc/refman/5.1/en/regexp.html.

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