Перекодировка HTML-entities to UTF8

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Аватара пользователя
wofs
постоялец
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань
Контактная информация:

Перекодировка HTML-entities to UTF8

Сообщение wofs »

Доброго дня. Столкнулся с проблемой.
Попался один файл, а там данные записаны в виде html кодов, как я понял.

Код: Выделить всё

ДИЛЕРСКИЙ ПРАЙС-ЛИСТ 

Подскажите, как мне малой кровью конвертировать это безобразие в UTF8?
Аватара пользователя
vitaly_l
долгожитель
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41
Контактная информация:

Сообщение vitaly_l »

wofs писал(а):как мне малой кровью конвертировать это безобразие в UTF8?

Берёте таблицу кодов (их полно в инете), загоняете все коды в массив + параллельно загоняете с теми же ID(номерами массива) сами символы для замены. И затем делаете стринг_реплайс в Вашем тексте, при совпадении текста с элементом первого массива, заменяете совпавший текст на элементы второго.

Либо, если сложно сделать стринг_реплайс, то тогда и сам текст загоняете в третий массив, разделяя массив, как вхождение = "&" окончание = ";" + остальной "промежуточный мусор". И потом заменяете элементы третьего массива при 100% совпадении с элементами из первого, на элементы с нужным номером из второго массива. В итоге: уже преобразованный третий массив состоящий из заменённых кодов и промежуточного мусора - собираете обратно в текст.

при желании первые два массива, можно сделать рекордом с двумя стрингами и загнать их в один массив.

Код: Выделить всё

THtmlcode = record
in: string; // сюда эту хрень => Д И Л
out: string; // сюда символы, которые хрень означает.
end;



Возможно есть и уже готовые функции, хотя сомневаюсь, что они существуют для Паскаля, если такие есть, то скорее всего они в PHP и/или JS.

.
Аватара пользователя
wofs
постоялец
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань
Контактная информация:

Сообщение wofs »

Воистину хрень... Начал шерстить кодовые страницы - оказалось, что это и есть UTF8

Код: Выделить всё

Д - Д

Только UTF8Decode не момогает...
Аватара пользователя
vitaly_l
долгожитель
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41
Контактная информация:

Сообщение vitaly_l »

wofs писал(а):UTF8Decode не момогает

Эта хрень это не UTF-8, но эта хрень в кодировке UTF-8.
Называется хрень "HTML спецсимволы" (мнемоники), вот таблица: https://ru.wikipedia.org/wiki/%D0%9C%D0 ... D0%B2_HTML
Аватара пользователя
wofs
постоялец
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань
Контактная информация:

Сообщение wofs »

Спасибо, пошел писать конвертер... Нафига в xlsx такую хрень писать...
Аватара пользователя
vitaly_l
долгожитель
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41
Контактная информация:

Сообщение vitaly_l »

wofs писал(а):Нафига в xlsx такую хрень писать...

В xlsx это для избежания путаниц с кодировками, т.к. в любой кодировке это будет: ДИЛЕРСКИЙ ПРАЙС-ЛИСТ . ИМХО
Аватара пользователя
wofs
постоялец
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань
Контактная информация:

Сообщение wofs »

vitaly_l писал(а):В xlsx это для избежания путаниц с кодировками,

странно, зачем тогда там <?xml version="1.0" encoding="UTF-8"?>

Добавлено спустя 1 минуту 31 секунду:
Что-то не выходит каменный цветочек - завтра попробую на свежую голову.
Аватара пользователя
vitaly_l
долгожитель
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41
Контактная информация:

Сообщение vitaly_l »

wofs писал(а):странно, зачем тогда там <?xml version="1.0" encoding="UTF-8"?>

Ну потому что написано, encoding="UTF-8", а на самом деле файл пересохранили в кодировке "windows-1251" и у людей далёких от программирования началась путаница. Люди стали писать гневные письма в микрософт, мол хреновый продукт сделали. И кстати, вот Вы занимаетесь программированием, но в кодировках тоже явно не понимаете. И представьте, что в микрософт обращаются 1 000 000 человек ежедневно. Вот в микрософте извернулись и сделали, всё на мнемониках. И мнемоникам - пофигу в какой кодировке файл, т.к. они сами по себе суть есть кодировка, которая совпадает с кодами UTF-8, но мнемоники - это не UTF-8.

Вышеизложенное это моё предположение, и я не знаю как оно на самом деле было и нафига они в XML хранят всё в мнемониках.

И вот этот ваш текст: &#1044;&#1048;&#1051;&#1045;&#1056;&#1057;&#1050;&#1048;&#1049; &#1055;&#1056;&#1040;&#1049;&#1057;-&#1051;&#1048;&#1057;&#1058; - означает ДИЛЕРСКИЙ ПРАЙС-ЛИСТ и записано оно именно в мнемониках, которые как Вы говорите лежат в обычном XML файле. Указание на кодировку в XML, к мнемоникам никакого отношения не имеет им(мнемоникам) - пофигу все кодировки.
pupsik
энтузиаст
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13
Контактная информация:

Сообщение pupsik »

Есть такой цветочек. Только шлифовать надо.
tema
постоялец
Сообщения: 376
Зарегистрирован: 24.03.2011 19:19:27

Сообщение tema »

wofs писал(а):Спасибо, пошел писать конвертер... Нафига в xlsx такую хрень писать...

Серьёзно? Конвертер? И это называется "малой кровью"?
Чем не устраивает вариант взять блокнот, скопипастить текст туда, сохранить файл в виде text.html и открыть его в любом браузере?

Добавлено спустя 2 минуты 18 секунд:
Вот скопировал текст из ТС в файл
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
vitaly_l
долгожитель
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41
Контактная информация:

Сообщение vitaly_l »

tema писал(а):Чем не устраивает вариант взять блокнот, скопипастить текст туда, сохранить файл в виде text.html и открыть его в любом браузере?

Это непрактично, т.к. xml файл - можно сразу открывать в любом браузере, без копирования в блокнот и сохранения в html файл... :wink:
sign
энтузиаст
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Сообщение sign »

wofs писал(а):Доброго дня. Столкнулся с проблемой.
Попался один файл, а там данные записаны в виде html кодов, как я понял.

Код: Выделить всё

&#1044;&#1048;&#1051;&#1045;&#1056;&#1057;&#1050;&#1048;&#1049; &#1055;&#1056;&#1040;&#1049;&#1057;-&#1051;&#1048;&#1057;&#1058; 

Подскажите, как мне малой кровью конвертировать это безобразие в UTF8?


Изображение

http://alexboiko.narod.ru/prod.html
Аватара пользователя
wofs
постоялец
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань
Контактная информация:

Сообщение wofs »

vitaly_l писал(а):Ну потому что написано, encoding="UTF-8", а на самом деле файл пересохранили в кодировке "windows-1251" и у людей далёких от программирования началась путаница.

Это один из десятка файлов xlsx, с которым такая беда. Закрадывается мысль о криворукости именно создателей онного.
vitaly_l писал(а):И кстати, вот Вы занимаетесь программированием, но в кодировках тоже явно не понимаете.

В МК, которые мне близки,я сталкивался с кодовыми таблицами символов - там все просто и прозрачно.
В php & java мне ни разу не пришлось плясать с бубном, что бы правильно отобразить текст - все файлы в UTF8 и в заголовке страницы

Код: Выделить всё

charset=UTF-8
.
pupsik писал(а):Есть такой цветочек. Только шлифовать надо.

Спасибо, посмотрю на досуге.
tema писал(а):Серьёзно? Конвертер? И это называется "малой кровью"?
Чем не устраивает вариант взять блокнот, скопипастить текст туда, сохранить файл в виде text.html и открыть его в любом браузере?

Если бы мне надо было просто прочитать текст, то я бы это задал в другом разделе...
sign писал(а):http://alexboiko.narod.ru/prod.html

В коде надо... Раздел Lazarus...
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

В инди и, вроде, в синапс есть функции перекодировки. Точнее не скажу, сейчас некогда смотреть.
Аватара пользователя
wofs
постоялец
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань
Контактная информация:

Сообщение wofs »

Снег Север писал(а):В инди и, вроде, в синапс есть функции перекодировки. Точнее не скажу, сейчас некогда смотреть.

Спасибо - гляну на досуге исходники.
Ответить