Вопрос: Инструмент для преобразования акцентированных символов в объекты HTML?


Есть ли инструмент (отлично подходит для командной строки), который может преобразовывать символы с акцентом в объекты HTML в Ubuntu? Предпочтительно рекурсивно и без преобразования html / php-тегов.

e.g.
from: é
to: é
or: é

4
2018-05-04 15:24


Источник




Ответы:


Recode может преобразовывать объекты HTML:

$ echo "é" | recode ..html
é

В перекоде есть несколько немного отличающихся HTML-преобразований; видеть info recode HTML,

Если вы хотите перекодировать файл или некоторые файлы, вы можете использовать

$ recode ..html one_file another_file and so on

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

$ find your_directory -type f -name "*.html"

Вышеуказанная команда find будет отображать только файлы. Убедитесь, что вы нашли только нужные файлы, а не какие-либо файлы, а не файлы в нежелательных каталогах. Также рекомендуется создать резервную копию или использовать копию ваших файлов, а не настоящие файлы. Если вы нашли правильную команду find, добавьте -exec your_command {} +, где your_command - это recode ..html сверху и {} обозначает файл (ы), которые даются с помощью find для перекодировки:

$ find your_directory -type f -name "*.html" -exec recode ..html {} +

Но подождите немного, есть одно большое предостережение: recode ..html предполагает, что ваши входные файлы находятся в том же наборе символов (кодировке), который вы используете в командной строке. Если все ваши файлы используют «современный» UTF-8, он будет работать нормально, потому что Ubuntu использовал UTF-8 из стандарта. Но если некоторые из ваших файлов используют старые ISO-8859-1 или другие кодировки, это будет намного сложнее.


4
2018-05-04 18:49



Я выполнил команду переименования, чтобы избавиться от всех пробелов в файлах с помощью rename 's/\ /_/g' * а потом for i in *.php; do iconv --from-code=ISO-8859-15 --to-code=UTF-8 $i > $i.iconv; mv $i.iconv $i; done для преобразования в UTF-8. Проблема с этой программой заключается в том, что она делает любой персонаж, который можно вообразить, включая теги html и php. - bafromca
Вам не нужно было переименовывать файлы. Вы можете использовать двойные кавычки вокруг значений переменных, т. Е. "$i", Эти двойные кавычки гарантируют, что ваши значения переменных не будут разделены. - elmicha


вероятно, sed. Учебник здесь

http://www.grymoire.com/Unix/Sed.html#uh-6

для вашего примера, может быть, команда

sed s/"é"/"\&#233"/g < oldfile > newfile

(исправьте меня, если я ошибаюсь, havent видел sed некоторое время)

графический интерфейс пользователя

возможно, установленный по умолчанию gedit, ctrl + H


0
2018-05-04 15:29



Я знаю об этих инструментах, но мне нужно преобразовать сотни файлов (так что gedit отсутствует), и мне нужно преобразовать все символы с акцентом (и их очень много). - bafromca
если вам нужно преобразовать сотни файлов, вы используете это sed с find, возможно, это так: find / folder_where_you_have_files -mindepth 0 -name * .html -exec sed s / "é" / "\ & # 233" / g <{} > {} .new \; sed может читать инструкции из файла, поэтому вы можете сразу заменить весь символ. Я не уверен, что я набрал команду точно так же, попробую некоторые примеры и опубликую, если что-то изменится - Denwerko


Проверьте источник http://www.text-symbols.com/tools/escape-chars/

Возьмите этот javascript, запустите его в среде js, которая может сделать несколько ввода-вывода (node.js) и просто использовать find -exec найти все файлы для конвертирования и выполнения вашего конвертера на основе всех необходимых файлов.


0
2018-05-04 15:48





Вдохновленный предложением Denwerko по использованию sed, я написал хорошо документированный легко читаемый скрипт bash с открытым исходным кодом, который преобразует акцентированные буквы в объектах HTML. Вы можете найти это здесь: http://www.lugato.co.uk/silvio_dwl.html Наслаждайся этим! ;)


0
2017-11-01 18:10