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

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

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

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

Сообщение wofs » 03.12.2017 18:23:22

Доброго дня. Столкнулся с проблемой.
Попался один файл, а там данные записаны в виде html кодов, как я понял.
Код: Выделить всё
ДИЛЕРСКИЙ ПРАЙС-ЛИСТ

Подскажите, как мне малой кровью конвертировать это безобразие в UTF8?
Аватара пользователя
wofs
постоялец
 
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань

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

Сообщение vitaly_l » 03.12.2017 18:46:33

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

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

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

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

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



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

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

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

Сообщение wofs » 03.12.2017 19:29:55

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

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

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

Сообщение vitaly_l » 03.12.2017 19:45:45

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

Эта хрень это не UTF-8, но эта хрень в кодировке UTF-8.
Называется хрень "HTML спецсимволы" (мнемоники), вот таблица: https://ru.wikipedia.org/wiki/%D0%9C%D0 ... D0%B2_HTML
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

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

Сообщение wofs » 03.12.2017 19:49:00

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

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

Сообщение vitaly_l » 03.12.2017 20:12:14

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

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

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

Сообщение wofs » 03.12.2017 20:31:26

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

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

Добавлено спустя 1 минуту 31 секунду:
Что-то не выходит каменный цветочек - завтра попробую на свежую голову.
Аватара пользователя
wofs
постоялец
 
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань

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

Сообщение vitaly_l » 03.12.2017 21:38:39

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, к мнемоникам никакого отношения не имеет им(мнемоникам) - пофигу все кодировки.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

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

Сообщение pupsik » 03.12.2017 21:54:53

Есть такой цветочек. Только шлифовать надо.
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

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

Сообщение tema » 03.12.2017 23:47:40

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

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

Добавлено спустя 2 минуты 18 секунд:
Вот скопировал текст из ТС в файл
У вас нет необходимых прав для просмотра вложений в этом сообщении.
tema
постоялец
 
Сообщения: 375
Зарегистрирован: 24.03.2011 20:19:27

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

Сообщение vitaly_l » 04.12.2017 01:20:53

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

Это непрактично, т.к. xml файл - можно сразу открывать в любом браузере, без копирования в блокнот и сохранения в html файл... :wink:
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

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

Сообщение sign » 04.12.2017 06:59:37

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
sign
энтузиаст
 
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

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

Сообщение wofs » 04.12.2017 09:24:29

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...
Аватара пользователя
wofs
постоялец
 
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань

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

Сообщение Снег Север » 04.12.2017 09:26:32

В инди и, вроде, в синапс есть функции перекодировки. Точнее не скажу, сейчас некогда смотреть.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2993
Зарегистрирован: 27.11.2007 16:14:47

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

Сообщение wofs » 04.12.2017 09:27:11

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

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

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 39

Рейтинг@Mail.ru