Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Общий по Linux (http://forum.oszone.net/forumdisplay.php?f=9)
-   -   Перекодировать файл с двумя кодировками (http://forum.oszone.net/showthread.php?t=353306)

Swit0 24-03-2023 15:38 3006043

Перекодировать файл с двумя кодировками
 
Вложений: 1
Добрый день!
Есть файл лога от базы данных, лог этот пишется в двух кодировках, UTF-8 и CP1251.
В итоге на Debian 9 сообщения которые записаны в CP1251 не читабельны.
Пытаюсь конвертировать его в кодировку UTF-8, но безрезультатно - на выходе снова кракозябры, но уже другие.

Утилита enca определяет этот файл ISO 8859-5 standard; ISO Cyrillic

Пытался такими способами:
iconv -f ISO8859-5 pg.log -t UTF-8 -o out.log
enconv -L russian -x UTF-8 pg.log

Все равно остаются кракозябры. Относительно успешно было в виндовом Notepad++, там если менять кодировку я вижу часть сообщений в CP1251, а часть в UTF-8.

Как "приравнять" файл к одной кодировке? Заранее спасибо.
Файл с примером лога приложил.

DJ Mogarych 24-03-2023 15:55 3006046

Код:

from='/home/user/pg.log'
to='/home/user/pg-new.log'

while read p; do
  if echo "$p" |grep -q --binary-files=text -v '[а-я]'; then
    echo "$p" |iconv -f WINDOWS-1251 -t UTF-8 >> $to
  else
    echo "$p" >> $to
  fi
done <$from

Литература:
https://stackoverflow.com/questions/...a-file-in-bash
https://unix.stackexchange.com/quest...native-methods

Swit0 24-03-2023 16:45 3006049

DJ Mogarych, спасибо, попробую.


Время: 09:34.

Время: 09:34.
© OSzone.net 2001-