случайно не попадалась ли кому программка (под венду) для пакетного перевода файлов в UTF-8 из других кодировок?
я такую программу нашел в конце прошлого года (точно помню), а потом протерял куда-то и найти не могу, и название вспомнить не могу.
плиз, очень надо!
P.S. iconv не предлагать.
michael
20.03.2008 - 23:51
Цитата |
P.S. iconv не предлагать. |
даже под cygwin?
sensey
27.03.2008 - 13:22
Код |
#!/usr/bin/env python import os import codecs
idir = 'c:/in/' odir = 'c:/out/'
ienc = 'cp1251' oenc = 'utf-8'
list = filter( lambda x: os.path.isfile( idir + x ), os.listdir( idir ))
for e in list: fi = codecs.open( idir + e, 'r', ienc) fo = codecs.open( odir + e, 'w', oenc) fo.write( fi.read() )
|
Вот маленькая программка на питоне. Тестировал под виндой - проблем не замечено.
Комеентарии, думаю излишни.
З.Ы.
Думаю, можно сделать аналогичную и на пых-пыхе, но не мастак.
sensey
27.03.2008 - 13:42
Однако, такие задачи следует решать инструментальным способом.
Вот пример кода на языке bash.
Код |
for i in `ls /path/in/*.txt`; do iconv -f cp1251 -t utf8 $i > $i."utf8"; mv $i."utf8" $i; done
|
Один инструмент - ls - перечисляет объекты, а другой - iconv - только конвертирует.
Таким образом, соблюдается правило прозрачности и система остается разложимой
на элементарные компоненты, что упрощает ее анализ и аудит.
Заметим, что все эти инструменты: ls, iconv, mv, bash - стандартизированы,
следовательно дополнительных программ устанавливать не надо.
sensey
27.03.2008 - 13:55
Цитата (RoDen) |
P.S. iconv не предлагать. |
И что только люди не придумают чтобы не использовать Unix
З.Ы.
установщик питона под винду можно найти на www.python.org
sensey
27.03.2008 - 15:45
Параметризованная версия утилиты
Код |
#!/usr/bin/env python import os import sys import codecs import re
p={} for a in sys.argv: m = re.search('([\w]*)=([-.:\w/"\"]*)', a) if m is not None: p[m.group(1)]=m.group(2)
list = filter( lambda x: os.path.isfile( p['in'] + x ), os.listdir( p['in'] ))
for e in list: print p['in'] + e + ' ---> ' + p['out'] + e fi = codecs.open( p['in'] + e, 'r', p['f']) fo = codecs.open( p['out'] + e, 'w', p['t']) fo.write( fi.read() )
|
Пример использования:
Код |
conv.py in=c:/in/ out=c:/out/ f=cp1251 t=utf-8
|
Сгенерировал exe-ник под винду.
sensey
27.03.2008 - 16:25
Однако выгрузить не получается. Выдается сообщение:
"""
ОБНАРУЖЕНЫ СЛЕДУЮЩИЕ ОШИБКИ
Вы не можете загружать такой тип файлов
"""
michael
27.03.2008 - 19:32
Цитата |
Вы не можете загружать такой тип файлов |
положи на ifolder.ru
sensey
27.03.2008 - 21:43
sensey
28.03.2008 - 02:26
Оказывается существуют сборки iconv под win32, например, в графическом редакторе
GIMP.
Таким образом, пользователи win32 могут тоже воспользоваться этой замечательной утилитой и конвертировать тексты из одной произвольной кодировки в другую.
Вот код, адаптированный для windows:
Код |
for i in `ls c:/pfiles/bash/in/*.txt`; do ./iconv.exe -f cp1251 -t utf-8 $i > $i."utf8" mv $i."utf8" $i done
|
Коммент:
Ключ -f задает исходную кодировку, ключ -t - конечную.
Комплект состоящий из интерпретатора bash, конвертора iconv а так же самого сценария и пуcкового батника можно скачать здесь:
bash+iconv (win32)Результат получился даже несколько компактнее чем в предыдущем случае.
ЗЫ
Только будьте осторожны, делайте резервные копии конвертируемых текстов.
ЗЫЗЫ
Приведенные выше примеры программного кода наглядно демонстрируют
неоспоримые преимущества применения специализа
sensey
спасибо за ответы!
я с iconv не работал пока, по сображениям лени и религиозным тоже.
ты скажи, он без BOM может перекодировать?
собственно, из того что я нашел под венду:
Tea(Win32). чудный текстовый редактор, который при весе в 1 мегабайт умеет даже открывать формат OpenOffice (ридонли), ну и кучу всего-всего умеет.
имеет сотни функций по обработке текста - сортировка, создание словарей, анализ текста, фильтрация, массовое изменение кодировок, запуск внешних программ и многое другое. недостаток - нельзя оперировать BOM-заголовками.
Kaboom - отличный перекодировщик, поддерживает массовое перекодирование файлов, которые перетащили в его окно. На паре текстовых файлов у меня почему-то сглючил, зараза - не перевел в юникод...
Textpipe - программа имеет больше сотни гибко настраиваемых фильтров замены и перекодировки. Платная. Про BOM я не нашел, подозреваю что не умеет.
PS вот как вы относитесь у UTF-8?
я лично видел два противоположных мнения:
1) плохо. php с ним не работает без геморроя, весит в два раза больше, глючит часто из-за BOM
2) хорошо! мультиязычность же!
sensey
29.03.2008 - 01:19
Цитата (RoDen) |
ты скажи, он без BOM может перекодировать? |
Да, может - для этого надо указать порядок следования байтов.
Примеры конвертирования:
1. Исходный порядок от младшего к старшему:
Код |
iconv -f UTF-16LE -t UTF-8 input.txt > output.txt
|
2. Исходный порядок от старшего к младшему:
Код |
iconv -f UTF-16BE -t UTF-8 input.txt > output.txt
|
Туда и обратно конвертирует, и без вcяких BOM-ов.
Iconv старейшая утилита и какие можно глюки в ней выловили.
Лучший выбор для пакетной конвертации.
sensey
29.03.2008 - 02:44
Что касается прикладных аспектов utf-8, то я не стану отрицать неготовность некоторого ПО (читай php) к использованию данного стандарта. Плюс до недавнего момента существовала проблема медленной сортировки UTF-строк в системе FreeBSD.
Но, на мой взгляд, у utf-8 есть неоспоримое приемущество - не надо думать о кодировках.
А что касается размера, то при применении компрессии файл в utf-кодировке и файл в традиционной кодировке не сильно будет отличаться по размеру, ведь количество информации останется неизменным.
Да и к тому же на на современных http-серверах есть модуль аля mod_gzip, делающий процесс компрессии текстовых потоков прозрачным и сводящий к минимуму сетевые задержки.
В стане пропонентов юникодизации есть такие гиганты как Google, IBM, Sun, MS, Adobe.
Любой их продукт полагается на юникод.
Возьмите любой стандарт документооборота, будь то ISO 32000 - PDF или ISO 26300
- ODF и вы увидите там юникод.
IMHO, в долгосрочной перспективе юникод выиграет и сопротивляться бесполезно.
sensey
29.03.2008 - 03:04
Цитата (RoDen) |
я с iconv не работал пока, по сображениям лени и религиозным тоже. |
А ты попробуй назло собственной лени.
А так, да, лень штука полезная, если она конструктивна.
Один китайский философ сказал, что когда умный человек воздерживается от действия, то могущество его чувствуется за сотни миль.
Нежелание выполнять ненужную работу считается великой добородетелью у программистов.
В этом ключ автоматизации.
Но лень может быть и деструктивной. Это проявляется не сразу, и только по прошествии времени осознаешь свою неправоту. Например, некоторые программисты пребывают в ловушке ручного труда.
Парадокс - им лень автоматизировать рутину, но не лень идти у нее на поводу.
Вчера на сайте IBM была опубликована статья, посвященная использованию юникода в языке программирования `php`:
http://www.ibm.com/developerworks/ru/libra...code/index.htmlНадо отметить, что php{4,5} работает только с ascii-символами.
Полноценная поддержка будет только в версии 6.
дед_мажор
4.05.2008 - 23:33
Цитата (sensey) |
Вчера на сайте IBM была опубликована статья |
с осени прошлого года еще висит.
статья полубредовая, ибо у автор явно не в теме.
он не знаком с таким понятием, как локаль.
а судя по примерам кода, он не знает, что такое юникодный редактор.
кроме того, он не знает, как с обычной клавиатуры вводить юникодные символы («…» например он задает как "…").
символ — он и есть символ, и при чем тут html-entities — ни разу не понятно.
в общем, сгодится для тех, кто первый раз слышит слово unicode.
Некоторые строковые/библиотечные функции php{4,5} неверно работают с многобайтными кодировками.
Вот обзор некоторых проблемЦитата |
* Handling UTF-8 with PHP o UTF-8 "Dangerous" PHP Functionality + The PCRE Extension + The String Extension + Array Extension + Mail Functions + Variables Handling + XML Extension (SAX) + XML DOM Extension + URL Functions + GD Extension + exif extension o UTF-8 Safe Functionality + explode + str_replace
|
Как видно из перечисления, большинство функционала так или иначе связанного с обработкой строк ведут себя некорректно по отношению к UTF и их применение небезопасно.
дед_мажор
10.05.2008 - 16:03
sensey
ахуенная новость!
Last modified: 2006/12/09
где ты ее столько времени прятал??
sensey
10.05.2008 - 18:16
Хотелось бы увидеть чейнджлоги того что изменилось с тех пор в плане UTF.
Разумеется, пруфлинки в студию!
дед_мажор
11.05.2008 - 11:59
sensey
воспользуйтесь официальной документацией на php.net и списком рассылки php.internals.
sensey
11.05.2008 - 21:42
2 Major
Не собираюсь пользоваться/изучать это чудо. Просто презабавно иногда слышать о его нелепых проблемах.
PS. Я для себя сделал выбор в пользу Пайтона.
дед_мажор
12.05.2008 - 07:24
Цитата (sensey) |
Не собираюсь пользоваться/изучать это чудо. |
ваше право.
зачем тогда вы лезете сюда со своими идиотскими статейками? показывать свою безграмотность?
в этом вы всех уже давно убедили.
sensey
12.05.2008 - 21:37
2 Мажор
Насчет безграмотности - так это батенька лень, а не безграмотность. Вопрос то был пустяковый, и задал я его чисто из праздного любопытства. А вы нет бы да просвещению поспособствовать, так нет же на личности переходите...
Не обидел ли я вас? Так вы уж простите.
Если у вас все же есть пруфлинки в пользу полной поддержку Юникода в PHP, то пожалуйста покажите - я только буду рад это услышать.
По сведениям, дошедшим до меня, полноценная поддержка должна появиться только с выходом версии 6.
Новость про PHP на Opennet.ru.
michael
12.05.2008 - 22:06
Цитата |
зачем тогда вы лезете сюда со своими идиотскими статейками? показывать свою безграмотность? в этом вы всех уже давно убедили |
"порву за князя, за Льва Николаича!"
а вообще Ruby-on-Rails нашевсё
дед_мажор
13.05.2008 - 22:34
Цитата (michael) |
а вообще Ruby-on-Rails нашевсё |
холивар [x]
против джавы не попрёшь!
дед_мажор
13.05.2008 - 23:13
Цитата (michael) |
По сведениям, дошедшим до меня, полноценная поддержка должна появиться только с выходом версии 6. |
оперативно до вас сведения доходят, однако!
об этом было известно еще года три назад.
и еще, про питон.
запомните: язык, который навязывает пользователю свой coding style, является недостойным применения.
Fast Reply:
Powered by dgreen
Здесь расположена полная версия этой страницы.