LinuxForum.Fans
Тема

какой утилитой узнать кодировку файла?

Автор: moshell 11 сообщений 4403 просмотров
#346113

пробую

gu@moshell:~$ file -i /mnt/hgfs/shara/file.csv
/mnt/hgfs/shara/file.csv: text/plain; charset=unknown-8bit
gu@moshell:~$

что это за такой charset=unknown-8bit
?

#346121
Lupo Alberto написал:

спасибо.

gu@moshell:~$ enca -L ru /mnt/hgfs/shara/file.csv
MS-Windows code page 1251
Mixed line terminators
gu@moshell:~$

как правильно побороть Mixed line terminators?
некоторые строки "разрываются" хорошо, линух их понимает, а некоторые "разрываются" как то по неведомому мне принципу

#346123

Как-то так...

text
sed 's/\r//g' FILE
text
tr -d '\r' < BAD_FILE > FILE
#346125
"moshell" написал:
некоторые строки "разрываются" хорошо, линух их понимает, а некоторые "разрываются" как то по неведомому мне принципу

Покажите

text

cat -A /mnt/hgfs/shara/file.csv

по крайней мере ту часть, где видны эти «неправильные» и «правильные» разрывы строк.

#346128

ход мыслей понятен.
в общем пора начинать курить VBA
ибо файлы эти мост-дайные.
взяты из экселя, в котором в пределах одной (некоторых) ячейки (ячейках) могут быть несколько строк.
то есть половина данных теряется во время преобразования из экселя в csv.

спасибо, Альберто.

прибейте тему (можно даже удалить) иначе в меня скоро тапочки полетят за частые маздайные вопросы

#346135
"moshell" написал:
в общем пора начинать курить VBA

За это можно не то что тапочком - валенком стоит огреть :)

"moshell" написал:
то есть половина данных теряется во время преобразования из экселя в csv.

Попробуйте преобразовывать в LO или OO.

#346179
-=Serj=- написал:
[quote="moshell"]в общем пора начинать курить VBA

За это можно не то что тапочком - валенком стоит огреть :)
[/quote]
предлагаете пересадить начальство на линухс?

-=Serj=- написал:
[quote="moshell"]то есть половина данных теряется во время преобразования из экселя в csv.

Попробуйте преобразовывать в LO или OO.[/quote]
не совсем понимаю о чем речь?
Но если файл уже изначально из маздая приходит битым, как с ним в линуксе работать?

#####################################
#####################################

выход следующий:
1) макрос убивает невидимые символы в экселе
Workbooks(Workbooks.Count).Worksheets(2).Range("A1:J250") = Application.Clean(Workbooks(Workbooks.Count).Worksheets(2).Range("A1:J250"))
2) переносим в линукс через "общую папочку"
3) далее

gu@moshell:~$ enca file.csv
MS-Windows code page 1251
gu@moshell:~$ recode -l | grep 1251
CP1251/CR-LF 1251/CR-LF ms-cyrl windows-1251
gu@moshell:~$ recode windows-1251 file.csv
gu@moshell:~$ enca file.csv
Universal transformation format 8 bits; UTF-8
CRLF line terminators

перекодирует хорошо, но разрыв строк сами видите какие.
для этого

gu@moshell:~$ dos2unix -n file.csv newfile
dos2unix: converting file file.csv to file newfile in Unix format ...
gu@moshell:~$ enca newfile
Universal transformation format 8 bits; UTF-8

Все хорошо, все ОК, но куча манипуляций.

к сожалению не нашел в recode ключика для изменения разрыва строк (такого как в dos2unix)

можно было бы в одной команде dos2unix все делать, но

Convert from Windows CP1252 to Unix UTF-8 (Unicode)

iconv -f CP1252 -t UTF-8 in.txt | dos2unix > out.txt

перекодирует в крокозябры, не знаю, может потому что тут 1252 а не 1251, в кодировках не силен.

можно ли как то упростить сиё творение?

#346180
"moshell" написал:
половина данных теряется во время преобразования из экселя в csv.
"moshell" написал:
не совсем понимаю о чем речь?
Но если файл уже изначально из маздая приходит битым, как с ним в линуксе работать?

Так я и говорю, поставить в оффтопик OO или LO и попробовать конвертировать ими, возможно у них получится лучше, чем у MS Excel.

#346190

enca сама умеет переконвертировать в нужную кодировку.

#346202
Lupo Alberto написал:
enca сама умеет переконвертировать в нужную кодировку.

да,
enconv file
справляется с этой задачей, но не нашел как в ней же преобразовать разрывы строк

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