LINUX.ORG.RU

Лор, почини мне кодировку

 ,


0

1

Суть такова: есть 1 csv файл со сломанной кодировкой. Он якобы сохранён в utf8, но некоторые символы полетели. Я пробовал шаманить с iconv ( в том числе и пройтись брутфорсом по все известным кодировкам ). Но ничего не помогло.

Потом попробовал проблемную часть вбить в этот сайт (клац) выставил cp1252 > utf8, и о чудо! он починил мой кусок.

Внимание вопрос: Как мне починить кодировку? Я бы с радостью вбил бы весь файл на сайт, но он весит > 50 мб. И вообще как этот сайт починил кодировку учитывая то что iconv не смог?

★★★★★

Последнее исправление: snaf (всего исправлений: 1)
Ответ на: комментарий от Kiborg

И вроде бы даже понятно почему.

Мне не понятно. Дядя разжуй пожалуйста. Как оно так вообще получилось если я сохранял в юникод?

Хм.. как мне весь файл конвертнуть?

 cat file.txt | iconv -f utf-8 -t cp1252 | head -n 5
iconv: illegal input sequence at position 0

snaf ★★★★★
() автор топика
Ответ на: комментарий от snaf

Вот «как оно получилось» (что файл так сохранился) - это не очень понятно, скорее всего это windows, там любят utf-16.

А вот примерно, что происходит в байтах (грубая аналогия): вместо 0xc3a4 (прямой порядок байт) было записано 0x00c3 0x00a4. При декодировании из utf-16 в cp1252 коды однобайтных символов от 0xA0 до 0xFF не изменяются, т. е. 0x00A4 (utf-16) -> 0xA4 (cp1252). Поэтому надо конвертировать из utf-16 в cp1252.

Kiborg ★★★
()
Ответ на: комментарий от Kiborg

скорее всего это windows, там любят utf-16.

да действительно, исходный файл был создан под виндой. Спасибо за объяснение.

snaf ★★★★★
() автор топика
Ответ на: комментарий от snaf

iconv: illegal input sequence at position 0

кстати, помогает iconv -c а то иногда внутри UTF-8 бывают НЕ utf-8.

(не ваш случай)

emulek
()
Ответ на: комментарий от Kiborg

щёрт,

$ iconv -f utf-16 -t cp1252 "file.txt" > temp
iconv: illegal input sequence at position 824684

Не обрабатывает весь файл. Что то можно поделать?

snaf ★★★★★
() автор топика
Ответ на: комментарий от snaf

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

Kiborg ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.