Культурный офтопик
 help / color / mirror / Atom feed
* Re: [room] Как найти файл в определённой кодировке?
  @ 2011-08-22 11:06 ` Alexei V. Mezin
    2011-08-22 11:53 ` Sergey Korobitsin
  1 sibling, 1 reply; 8+ messages in thread
From: Alexei V. Mezin @ 2011-08-22 11:06 UTC (permalink / raw)
  To: Культурный
	офтопик

22.08.2011 14:01, Денис Черносов пишет:

> 1) Есть ли автоматический способ получить список файлов, в cp1251 для
> (полу)автоматической конвертации в юникод?
>
> 2) Аналогичный вопрос про переносы строк в стиле Windows|Unix...

Не так?

[alexei@intel_server tmp]$ file 1251.txt utf.txt
1251.txt: ISO-8859 English text, with CRLF line terminators
utf.txt:  UTF-8 Unicode English text

Один файл из второго получен путем recode cp1251..utf8.


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [room] Как найти файл в определённой кодировке?
    2011-08-22 11:06 ` [room] Как найти файл в определённой кодировке? Alexei V. Mezin
@ 2011-08-22 11:53 ` Sergey Korobitsin
    1 sibling, 1 reply; 8+ messages in thread
From: Sergey Korobitsin @ 2011-08-22 11:53 UTC (permalink / raw)
  To: smoke-room

Денис Черносов ☫ → To Культурный офтопик @ Mon, Aug 22, 2011 14:01 +0400

> Добрый день всем!
> 
> 
> Есть проект, которые разрабатывался в течение долгого времени самыми разными
> людьми. В нём в хаотичном порядке встречаются файлы в кодировке cp1251
> (остальные в юникоде).
> 
> 1) Есть ли автоматический способ получить список файлов, в cp1251 для
> (полу)автоматической конвертации в юникод?

AFAIR, recode при указании перекодировать cp1251->unicode уже
unicode-ный файл не тронет (у меня был положительный опыт, но лучше
попробовать).

> 2) Аналогичный вопрос про переносы строк в стиле Windows|Unix...

Аналогично здесь. AFAIK, все преобразователи делают замену \r\n на \n,
соответственно юниксный файл будет содержать только \n и заменятор
заменять ничего не будет. Но вначале всё равно стоит
поэкспериментировать.

-- 
Bright regards, Sergey Korobitsin,
Chief Research Officer
Arta Software, http://arta.kz/
xmpp:undertaker@jabber.arta.kz

--
...Когда я увидел перед собой перспективу жизни, прожитой так же, 
как живет весь мир, я решил - ни за что, это отвратительно, 
мне будет стыдно самого себя. Если бы я участвовал в поддержке 
этой системы отчужденного, собственнического программирования, 
мне казалось бы, что я делаю мир хуже ради денег. 
  -- Ричард М. Столлман (из интервью)


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [room] Как найти файл в определённой кодировке?
  @ 2011-08-24 10:09     ` Alexei V. Mezin
  0 siblings, 0 replies; 8+ messages in thread
From: Alexei V. Mezin @ 2011-08-24 10:09 UTC (permalink / raw)
  To: Культурный
	офтопик

24.08.2011 13:57, Денис Черносов пишет:

> Нет, эта информация ненадёжная.

Не знаю, есть ли готовое, но google("file charset detection") говорит, что
http://sourceforge.net/projects/chsdet/
http://fredeaker.blogspot.com/2007/01/character-encoding-detection.html
http://www-archive.mozilla.org/projects/intl/detectorsrc.html

и даже есть теория
http://www-archive.mozilla.org/projects/intl/UniversalCharsetDetection.html


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [room] Как найти файл в определённой кодировке?
  @ 2011-08-24 10:14     ` Alexei V. Mezin
  2011-08-24 10:23       ` Andrew Borodin
  2011-08-24 10:19     ` Aleksey Avdeev
  2011-08-24 11:43     ` Sergey Korobitsin
  2 siblings, 1 reply; 8+ messages in thread
From: Alexei V. Mezin @ 2011-08-24 10:14 UTC (permalink / raw)
  To: Культурный
	офтопик

24.08.2011 14:04, Денис Черносов пишет:

> 2) преобразование виндовых разделителей в юниксовые он делать не умеет и
> вообще не перекодирует такие файлы:
>
> recode: failed: Ambiguous output in step `CR-LF..data'
>

Для этого есть ключ -f

С последующим прогоном recode /CR (или /LF, надо в man уточнить), 
который уберет лишние символы там, где они есть.


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [room] Как найти файл в определённой кодировке?
    2011-08-24 10:14     ` Alexei V. Mezin
@ 2011-08-24 10:19     ` Aleksey Avdeev
  2011-08-24 11:43     ` Sergey Korobitsin
  2 siblings, 0 replies; 8+ messages in thread
From: Aleksey Avdeev @ 2011-08-24 10:19 UTC (permalink / raw)
  To: Культурный
	офтопик

[-- Attachment #1: Type: text/plain, Size: 1389 bytes --]

24.08.2011 14:04, Денис Черносов пишет:
> 
> 
> 22 августа 2011 г. 15:53 пользователь Sergey Korobitsin
> <undertaker@arta.kz <mailto:undertaker@arta.kz>> написал:
> 
>     Денис Черносов ☫ → To Культурный офтопик @ Mon, Aug 22, 2011 14:01 +0400
> 
...
> 
>     > 2) Аналогичный вопрос про переносы строк в стиле Windows|Unix...
> 
>     Аналогично здесь. AFAIK, все преобразователи делают замену \r\n на \n,
>     соответственно юниксный файл будет содержать только \n и заменятор
>     заменять ничего не будет. Но вначале всё равно стоит
>     поэкспериментировать.
> 
> 
> Поэкспериментировал...
> 1) вроде бы recode действительно не перекодирует лишнего, но
> 2) преобразование виндовых разделителей в юниксовые он делать не умеет и
> вообще не перекодирует такие файлы:
> 
> recode: failed: Ambiguous output in step `CR-LF..data'

  dos2unix (из пакета hd2u)?

-- 

С уважением. Алексей.



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 900 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [room] Как найти файл в определённой кодировке?
  2011-08-24 10:14     ` Alexei V. Mezin
@ 2011-08-24 10:23       ` Andrew Borodin
  2011-08-25 20:18         ` Aleksey Avdeev
  0 siblings, 1 reply; 8+ messages in thread
From: Andrew Borodin @ 2011-08-24 10:23 UTC (permalink / raw)
  To: Культурный
	офтопик

On Wed, Aug 24, 2011 at 02:14:39PM +0400, Alexei V. Mezin wrote:
> 24.08.2011 14:04, Денис Черносов пишет:

> С последующим прогоном recode /CR (или /LF, надо в man 
> уточнить), который уберет лишние символы там, где они есть.

Думаю, что

tr -d '\r'

будет быстрее.

-- 

С уважением
А. Бородин.


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [room] Как найти файл в определённой кодировке?
    2011-08-24 10:14     ` Alexei V. Mezin
  2011-08-24 10:19     ` Aleksey Avdeev
@ 2011-08-24 11:43     ` Sergey Korobitsin
  2 siblings, 0 replies; 8+ messages in thread
From: Sergey Korobitsin @ 2011-08-24 11:43 UTC (permalink / raw)
  To: smoke-room

Денис Черносов ☫ → To Культурный офтопик @ Wed, Aug 24, 2011 14:04 +0400

> Поэкспериментировал...
> 1) вроде бы recode действительно не перекодирует лишнего, но
> 2) преобразование виндовых разделителей в юниксовые он делать не умеет и
> вообще не перекодирует такие файлы:
> 
> recode: failed: Ambiguous output in step `CR-LF..data'
> 
> Зато iconv их нормально отрабатывает. Но iconv точно пытается перекодироват
> файлы, которые уже в юникоде и вылетает по ошибке:
> 
> iconv: недопустимая входная последовательность в позиции 1099
> 
> Так что вижу выход рекурсивного прохода каталога с помощью recode и второго
> прохода файлов, на которых он споткнулся с помощью iconv.

Можно сделать в три этапа:
1. Прогоняем каталоги dos2unix (или аналогичной штукой, tr например)
   Результат: имеем все файлы в UNIX-кодировке

2. Натравливаем на готовые файлы. В идеале оно должно пройти без ошибок.
   Если ошибки всё-таки есть, то смотрим, что произошло и при
   необходимости натравливаем iconv

> Спасибо всем за участие! Особенно тебе, земляк. ;)

Пожалуйста! Меня тоже напрягают файлы не в unicode и не в
unix-line-endings. При попытке работать с такими с помощью while; read,
awk, да почти всеми текстовыми утилитами, начинается такая катавасия,
что боже упаси.

-- 
Bright regards, Sergey Korobitsin,
Chief Research Officer
Arta Software, http://arta.kz/
xmpp:undertaker@jabber.arta.kz

--
Пифагоровы штаны Лобачевскому смешны
 -- <lj user=osd>


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [room] Как найти файл в определённой кодировке?
  2011-08-24 10:23       ` Andrew Borodin
@ 2011-08-25 20:18         ` Aleksey Avdeev
  0 siblings, 0 replies; 8+ messages in thread
From: Aleksey Avdeev @ 2011-08-25 20:18 UTC (permalink / raw)
  To: Культурный
	офтопик

[-- Attachment #1: Type: text/plain, Size: 465 bytes --]

24.08.2011 14:23, Andrew Borodin пишет:
> On Wed, Aug 24, 2011 at 02:14:39PM +0400, Alexei V. Mezin wrote:
>> 24.08.2011 14:04, Денис Черносов пишет:
> 
>> С последующим прогоном recode /CR (или /LF, надо в man 
>> уточнить), который уберет лишние символы там, где они есть.
> 
> Думаю, что
> 
> tr -d '\r'
> 
> будет быстрее.

  Если концевые пробелы не критичны, то как вариант:

sed -i 's/[[:space:]]*$//' ...

-- 

С уважением. Алексей.



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 900 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2011-08-25 20:18 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-08-22 11:06 ` [room] Как найти файл в определённой кодировке? Alexei V. Mezin
2011-08-24 10:09     ` Alexei V. Mezin
2011-08-22 11:53 ` Sergey Korobitsin
2011-08-24 10:14     ` Alexei V. Mezin
2011-08-24 10:23       ` Andrew Borodin
2011-08-25 20:18         ` Aleksey Avdeev
2011-08-24 10:19     ` Aleksey Avdeev
2011-08-24 11:43     ` Sergey Korobitsin

Культурный офтопик

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/smoke-room/0 smoke-room/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 smoke-room smoke-room/ http://lore.altlinux.org/smoke-room \
		smoke-room@lists.altlinux.org smoke-room@lists.altlinux.ru smoke-room@lists.altlinux.com smoke-room@altlinux.ru smoke-room@altlinux.org smoke-room@altlinux.com
	public-inbox-index smoke-room

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.smoke-room


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git