Библиотека
Дневники
Фотогалереи
Легкий форум
Архив
Поиск
Здравствуйте Гость (Вход|Регистрация)   
Студенческий форум
 
 


Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению ) Ответ в темуСоздание новой темыСоздание опроса

> перевод файлов в UTF-8, пакетный

RoDen
Быстрая цитата




Уважаемый Председатель ученого совета
Group Icon

Профиль
Группа: Серый кардинал
Сообщений: 3285
Регистрация: 10.03.2005
Репутация: 248

Место учебы: политех


случайно не попадалась ли кому программка (под венду) для пакетного перевода файлов в UTF-8 из других кодировок?

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

плиз, очень надо!

P.S. iconv не предлагать.
PM
Top
michael
Быстрая цитата




Уважаемый карабас-барабас
Group Icon

Профиль
Группа: Декан
Сообщений: 1714
Регистрация: 12.05.2005
Репутация: 164

Место учебы: /usr/share/man


Цитата
P.S. iconv не предлагать.


даже под cygwin?
PMСайт пользователяICQ
Top
sensey
Быстрая цитата




Аспирант
***

Профиль
Группа: Пользователи
Сообщений: 191
Регистрация: 6.06.2005
Репутация: 16

Место учебы: ОрелГТУ


Код


#!/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() )




Вот маленькая программка на питоне. Тестировал под виндой - проблем не замечено.
Комеентарии, думаю излишни.

З.Ы.
Думаю, можно сделать аналогичную и на пых-пыхе, но не мастак.
PMПисьмо на e-mail пользователюMSN
Top
sensey
Быстрая цитата




Аспирант
***

Профиль
Группа: Пользователи
Сообщений: 191
Регистрация: 6.06.2005
Репутация: 16

Место учебы: ОрелГТУ


Однако, такие задачи следует решать инструментальным способом.
Вот пример кода на языке 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 - стандартизированы,
следовательно дополнительных программ устанавливать не надо.
PMПисьмо на e-mail пользователюMSN
Top
sensey
Быстрая цитата




Аспирант
***

Профиль
Группа: Пользователи
Сообщений: 191
Регистрация: 6.06.2005
Репутация: 16

Место учебы: ОрелГТУ


Цитата (RoDen)
P.S. iconv не предлагать.


И что только люди не придумают чтобы не использовать Unix

З.Ы.
установщик питона под винду можно найти на www.python.org
PMПисьмо на e-mail пользователюMSN
Top
sensey
Быстрая цитата




Аспирант
***

Профиль
Группа: Пользователи
Сообщений: 191
Регистрация: 6.06.2005
Репутация: 16

Место учебы: ОрелГТУ


Параметризованная версия утилиты

Код

#!/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-ник под винду.
PMПисьмо на e-mail пользователюMSN
Top
sensey
Быстрая цитата




Аспирант
***

Профиль
Группа: Пользователи
Сообщений: 191
Регистрация: 6.06.2005
Репутация: 16

Место учебы: ОрелГТУ


Однако выгрузить не получается. Выдается сообщение:
"""
ОБНАРУЖЕНЫ СЛЕДУЮЩИЕ ОШИБКИ
Вы не можете загружать такой тип файлов
"""
PMПисьмо на e-mail пользователюMSN
Top
michael
Быстрая цитата




Уважаемый карабас-барабас
Group Icon

Профиль
Группа: Декан
Сообщений: 1714
Регистрация: 12.05.2005
Репутация: 164

Место учебы: /usr/share/man


Цитата
Вы не можете загружать такой тип файлов


положи на ifolder.ru
PMСайт пользователяICQ
Top
sensey
Быстрая цитата




Аспирант
***

Профиль
Группа: Пользователи
Сообщений: 191
Регистрация: 6.06.2005
Репутация: 16

Место учебы: ОрелГТУ


текст_программы
дистрибутив( требует python )


Интерпретатор python можно скачать здесь: python-2.5.2_win32_installer
PMПисьмо на e-mail пользователюMSN
Top
sensey
Быстрая цитата




Аспирант
***

Профиль
Группа: Пользователи
Сообщений: 191
Регистрация: 6.06.2005
Репутация: 16

Место учебы: ОрелГТУ


Оказывается существуют сборки 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)

Результат получился даже несколько компактнее чем в предыдущем случае.

ЗЫ
Только будьте осторожны, делайте резервные копии конвертируемых текстов.
ЗЫЗЫ
Приведенные выше примеры программного кода наглядно демонстрируют
неоспоримые преимущества применения специализа
PMПисьмо на e-mail пользователюMSN
Top
RoDen
Быстрая цитата




Уважаемый Председатель ученого совета
Group Icon

Профиль
Группа: Серый кардинал
Сообщений: 3285
Регистрация: 10.03.2005
Репутация: 248

Место учебы: политех


sensey
спасибо за ответы!
я с iconv не работал пока, по сображениям лени и религиозным тоже.
ты скажи, он без BOM может перекодировать?


собственно, из того что я нашел под венду:
Tea(Win32). чудный текстовый редактор, который при весе в 1 мегабайт умеет даже открывать формат OpenOffice (ридонли), ну и кучу всего-всего умеет.
имеет сотни функций по обработке текста - сортировка, создание словарей, анализ текста, фильтрация, массовое изменение кодировок, запуск внешних программ и многое другое. недостаток - нельзя оперировать BOM-заголовками.

Kaboom - отличный перекодировщик, поддерживает массовое перекодирование файлов, которые перетащили в его окно. На паре текстовых файлов у меня почему-то сглючил, зараза - не перевел в юникод...

Textpipe - программа имеет больше сотни гибко настраиваемых фильтров замены и перекодировки. Платная. Про BOM я не нашел, подозреваю что не умеет.

PS вот как вы относитесь у UTF-8?
я лично видел два противоположных мнения:
1) плохо. php с ним не работает без геморроя, весит в два раза больше, глючит часто из-за BOM
2) хорошо! мультиязычность же!
PM
Top
sensey
Быстрая цитата




Аспирант
***

Профиль
Группа: Пользователи
Сообщений: 191
Регистрация: 6.06.2005
Репутация: 16

Место учебы: ОрелГТУ


Цитата (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 старейшая утилита и какие можно глюки в ней выловили.
Лучший выбор для пакетной конвертации.

PMПисьмо на e-mail пользователюMSN
Top
sensey
Быстрая цитата




Аспирант
***

Профиль
Группа: Пользователи
Сообщений: 191
Регистрация: 6.06.2005
Репутация: 16

Место учебы: ОрелГТУ


Что касается прикладных аспектов utf-8, то я не стану отрицать неготовность некоторого ПО (читай php) к использованию данного стандарта. Плюс до недавнего момента существовала проблема медленной сортировки UTF-строк в системе FreeBSD.


Но, на мой взгляд, у utf-8 есть неоспоримое приемущество - не надо думать о кодировках.

А что касается размера, то при применении компрессии файл в utf-кодировке и файл в традиционной кодировке не сильно будет отличаться по размеру, ведь количество информации останется неизменным.

Да и к тому же на на современных http-серверах есть модуль аля mod_gzip, делающий процесс компрессии текстовых потоков прозрачным и сводящий к минимуму сетевые задержки.


В стане пропонентов юникодизации есть такие гиганты как Google, IBM, Sun, MS, Adobe.
Любой их продукт полагается на юникод.

Возьмите любой стандарт документооборота, будь то ISO 32000 - PDF или ISO 26300
- ODF и вы увидите там юникод.



IMHO, в долгосрочной перспективе юникод выиграет и сопротивляться бесполезно.

PMПисьмо на e-mail пользователюMSN
Top
sensey
Быстрая цитата




Аспирант
***

Профиль
Группа: Пользователи
Сообщений: 191
Регистрация: 6.06.2005
Репутация: 16

Место учебы: ОрелГТУ


Цитата (RoDen)
я с iconv не работал пока, по сображениям лени и религиозным тоже.


А ты попробуй назло собственной лени.

А так, да, лень штука полезная, если она конструктивна.
Один китайский философ сказал, что когда умный человек воздерживается от действия, то могущество его чувствуется за сотни миль.
Нежелание выполнять ненужную работу считается великой добородетелью у программистов.
В этом ключ автоматизации.

Но лень может быть и деструктивной. Это проявляется не сразу, и только по прошествии времени осознаешь свою неправоту. Например, некоторые программисты пребывают в ловушке ручного труда.
Парадокс - им лень автоматизировать рутину, но не лень идти у нее на поводу.
PMПисьмо на e-mail пользователюMSN
Top
sensey
Быстрая цитата




Аспирант
***

Профиль
Группа: Пользователи
Сообщений: 191
Регистрация: 6.06.2005
Репутация: 16

Место учебы: ОрелГТУ


Вчера на сайте IBM была опубликована статья, посвященная использованию юникода в языке программирования `php`:
http://www.ibm.com/developerworks/ru/libra...code/index.html

Надо отметить, что php{4,5} работает только с ascii-символами.
Полноценная поддержка будет только в версии 6.

PMПисьмо на e-mail пользователюMSN
Top
дед_мажор
Быстрая цитата




Уважаемый крутой перец
Group Icon

Профиль
Группа: Декан
Сообщений: 2405
Регистрация: 11.11.2005
Репутация: 156

Место учебы: да


Цитата (sensey)
Вчера на сайте IBM была опубликована статья

с осени прошлого года еще висит.

статья полубредовая, ибо у автор явно не в теме.

он не знаком с таким понятием, как локаль.
а судя по примерам кода, он не знает, что такое юникодный редактор.
кроме того, он не знает, как с обычной клавиатуры вводить юникодные символы («…» например он задает как "…").
символ — он и есть символ, и при чем тут html-entities — ни разу не понятно.

в общем, сгодится для тех, кто первый раз слышит слово unicode.
PMПисьмо на e-mail пользователю
Top
sensey
Быстрая цитата




Аспирант
***

Профиль
Группа: Пользователи
Сообщений: 191
Регистрация: 6.06.2005
Репутация: 16

Место учебы: ОрелГТУ


Некоторые строковые/библиотечные функции 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 и их применение небезопасно.
PMПисьмо на e-mail пользователюMSN
Top
дед_мажор
Быстрая цитата




Уважаемый крутой перец
Group Icon

Профиль
Группа: Декан
Сообщений: 2405
Регистрация: 11.11.2005
Репутация: 156

Место учебы: да


sensey
ахуенная новость!

Last modified: 2006/12/09

где ты ее столько времени прятал??
PMПисьмо на e-mail пользователю
Top
sensey
Быстрая цитата




Аспирант
***

Профиль
Группа: Пользователи
Сообщений: 191
Регистрация: 6.06.2005
Репутация: 16

Место учебы: ОрелГТУ


Хотелось бы увидеть чейнджлоги того что изменилось с тех пор в плане UTF.
Разумеется, пруфлинки в студию!
PMПисьмо на e-mail пользователюMSN
Top
дед_мажор
Быстрая цитата




Уважаемый крутой перец
Group Icon

Профиль
Группа: Декан
Сообщений: 2405
Регистрация: 11.11.2005
Репутация: 156

Место учебы: да


sensey
воспользуйтесь официальной документацией на php.net и списком рассылки php.internals.
PMПисьмо на e-mail пользователю
Top
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
 
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:o  :D  :rolleyes:  :cry2: 
:unsure:  :cry:  :angry:  :bleh: 
:dev:  :flowers:  :fool:  :old: 
:shook:  :angel:  :wor:  :rotfl: 
:kov:  :chair:  :friends:  :wub: 
       
Показать всё


 
Опции сообщения  Включить смайлики?
 Включить подпись?
 Использовать AJAX?

Опции темыСтраницы: (2) [1] 2  Ответ в темуСоздание новой темыСоздание опроса

 

Студенческий клуб ostudent.ru и его создатели не несут ответственности за достоверность самостоятельно размещаемой посетителями сайта информации и не могут подтвердить или опровергнуть её.

Этот сайт защищен «Site Guard»