LinuxForum.Fans
Тема

Как правильно перекодировать в UTF-8

Автор: Diiimonn 6 сообщений 3862 просмотров
#78080

Здравствуйте
есть документы .html я их перекодирую из windows-1251 в utf-8 вот так:

text
find -maxdepth 1 -iname  "*.html"  -type f -exec bash -c "cat {} | iconv -c -f WINDOWS-1251 -t UTF-8> ./res/{}" \;

но вот проблема, после перекодировки созданные файлы открываются в программе Kate как файлы в кодировке win и все русские символы в кракозябрах.
это сигнал для меня что что-то не так я сделал.Катя должна сразу автоопределить кодировку и открыть в Утф.

#78083

А в самих исходниках страниц кодировка исправлена?
Как допустим в этой странице:

text

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru" dir="ltr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ...

#78086
Lupo Alberto написал:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

ага. надо ещё эти html'ки обработать sed'ом. Но и это ещё не всё: у вас будут проблемы, если в ссылках содержаться русские буквы.

Diiimonn, вот здесь посмотрите...

#78091

метатеги обработаны, но дело не в том как отображаются страници в браузере(а отображаются они нормально), а почему они не распознаются как утфские катей(может и другими прогами не пробовал еще).Это просто беспокоит и смущает сознание, гдето значит еще что-то недоконвертировано...

#78094
Diiimonn написал:
Это просто беспокоит и смущает сознание, гдето значит еще что-то недоконвертировано...

дык проверьте той-же sed.
в русском тексте должны быть лишь символы от \x20 до \x7f, табуляции, <CR>, <LF>, ну и русские буквы. Русские буквы для sed являются буквами, и попадают в RE /\w/. (если у вас локаль правильно установлена)

А ещё переведите в UNIX формат перевода строки, sed 's/\r$//', может kate попросту считает, что раз перевод строки из MS-DOS, то и кодировка такая.

#78115
drBatty написал:
А ещё переведите в UNIX формат перевода строки, sed 's/\r$//', может kate попросту считает, что раз перевод строки из MS-DOS, то и кодировка такая.

то что надо :D
благодарю

Войдите или зарегистрируйтесь, чтобы ответить.