LINUX.ORG.RU

Конвертация HTML символов в UTF-8

 


1

1

Здравствуйте. Есть текстовый файл с именами в кодировке UTF-8. Но присутствуют символы начинающиеся с амперсанда:

cat names

Nastásia
Böttner
Αфанасьев

Нужно HTML символы перевести в UTF-8

Требуемый результат

Nastásia
Böttner
Αфанасьев

Если делать

recode html..utf-8
, то возникают проблемы с кирилицей.

cat names | recode html..utf-8
Nastásia
Böttner
ΑÑ�анаÑ�Ñ�ев


Последнее исправление: napulsnik (всего исправлений: 4)

то возникают проблемы с кирилицей.

И где пример с кириллицей?

То что есть lynx преобразовывает так:

 Nastásia Böttner Olen'ka

anonymous
()
Ответ на: комментарий от napulsnik

recode считает, что если html, то кодировка там Latin-1. Не знаю, как ему сказать, что там utf-8. Может вас устроит такой хак:

recode utf-8..html | sed 's/&/\&/g' | recode html..utf-8

mky ★★★★★
()
$cat decode.py
#!/usr/bin/python3

import html

with open('names', 'r') as f:
        for line in f:
                print(html.unescape(line.strip()))
$./decode.py 
Nastásia
Böttner
Αфанасьев
hippi90 ★★★★★
()
$ cat 1.txt | perl -MHTML5::DOM -pe '$_ = HTML5::DOM->new({encoding => "UTF-8"})->parse($_)->root->textContent'
Nastásia
Böttner
Αфанасьев

Алсо ещё и теги обработает, если есть

anonymous
()

Между & и # десятичный код символа. Замени и всё.

Legioner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.