Автор Гілка: HTML win1251->utf8  (Прочитано 3534 раз)

Відсутній Rainbow

  • Новачок
  • *
  • дописів: 45
  • Карма: +0/-0
  • Що новенького?
HTML win1251->utf8
« : 2004-10-05 17:20:07 »
Треба перекодувати html файли (форум phpBB) в нормальне кодування (тобто utf8) з ненормального (тобто в1251). Яка э для цього утиліта?

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3857
  • Карма: +13/-0
  • Програміст
Re: HTML win1251->utf8
« Відповідей #1 : 2004-10-05 18:01:12 »
Під лінуксом:
iconv -f CP1251 -t UTF-8 <file-old.txt >file-new.txt
[Fedora Linux]

Павло Богмат

  • Гість
Re: HTML win1251->utf8
« Відповідей #2 : 2004-10-05 22:45:33 »
А чим і як можна рекурсивно перекодувати назви файлів та тек із ср1251 в UTF-8???

Відсутній Дмитро Ковальов

  • Кореспондент
  • ***
  • дописів: 236
  • Карма: +0/-0
Re: HTML win1251->utf8
« Відповідей #3 : 2004-10-06 04:31:08 »
А чим і як можна рекурсивно перекодувати назви файлів та тек із ср1251 в UTF-8???

якщо тільки файли в 1251, тоді так:
Увага : не тестований код
find . -type f -print0 |  while read NAME ; do
mv "$NAME" "$(echo ${NAME} | iconv -f CP1251 -t UTF-8)"
done
з теками буде трохи більше мороки, але ідея та ж сама.

З iconv є проблема -- він дуже часто вилітає, якщо трапляється символ, не з того кодування, що потрібно. В цьому випадку Ви можете втратити свої файли. Можна спочатку спробувати cp  замість mv. В цьому випадку скрипт може бути трохи складнішим.

Відсутній Rainbow

  • Новачок
  • *
  • дописів: 45
  • Карма: +0/-0
  • Що новенького?
Re: HTML win1251->utf8
« Відповідей #4 : 2004-10-06 11:35:14 »
Хм.. iconv перелопачує файл повністю. А html-лка в юнікоді це не зовсім те. Подивіться текст гугла і побачите в чому зачіпка.

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3857
  • Карма: +13/-0
  • Програміст
Re: HTML win1251->utf8
« Відповідей #5 : 2004-10-06 14:23:43 »
А чим і як можна рекурсивно перекодувати назви файлів та тек із ср1251 в UTF-8???


Ну наприклад цим:

http://tmv.sourceforge.net/

Зараз таких утиліт багато є, навіть я маю свою власну. ;)
[Fedora Linux]

Відсутній Дмитро Ковальов

  • Кореспондент
  • ***
  • дописів: 236
  • Карма: +0/-0
Re: HTML win1251->utf8
« Відповідей #6 : 2004-10-07 03:54:15 »
Хм.. iconv перелопачує файл повністю. А html-лка в юнікоді це не зовсім те. Подивіться текст гугла і побачите в чому зачіпка.
Тобто, мова про всякі &#x1111;  штучки (html-entities). Так, вони теж трапляються, але якщо вся сторінка в одному кодуванні (юнікод), то й звичайний текст буде працювати.

Тобто, якщо я маю наприклад сторінку в коі-8 і хочу в неї вставити кілька слів в юнікоді, тоді без всих цих прибамбасів мені не обійтись. А якщо нормальний юнікод -- нормально.

Правда, якщо в вихідному 1251 тексі трапляються ці entity, то їх треба перекодувати. Колись, я писав скриптик для перекодування результатів man2htm   в нормальний український текст. Може щось треба буде підправити:
#!/usr/bin/perl
$m2h = "/usr/bin/man2html";
$src = shift;
(( $src eq "" ) or ( ! -f $src )) && do  { print "Need a file name \n\n ";  exit 1; };
$manpath="/home/users/d/dm/dmytro/utrans/htdocs/mdk/man/";

$CHARSET='<meta http-equiv="Content-Type" content="text/html; charset=koi8-u">';
open  FL, " $m2h ${manpath}${src}  | ";

while (<FL>) {
    while (/(\&\#(\d{3})\;)/) {
         $char = chr($2);
         s/$1/$char/g;
    }
    print;
    print $CHARSET if ($_ =~ /<HEAD>/);
 }