У меня есть довольно большой CSV-файл (~ 700 МБ), который, как я знаю, состоит из строк 27-символьных буквенно-цифровых хэшей; никаких запятых или чего-нибудь необычного. Каким-то образом во время перехода с Windows на Linux (через winSCP, а затем через несколько обычных SCP) он преобразовался в некий незнакомый двоичный формат.

Если я открываю файл в vi, все выглядит нормально, и в нижней части написано [преобразовано], хотя я знаю, что это не проблема окончания строки (и dos2unix не помогает). Если я "возглавляю" файл, он выглядит правильно, за исключением "a" в начале первой строки. Однако, если я открываю файл в nano, я вижу "ÿþ" в начале, а затем «^ @» перед каждым символом (даже символом новой строки и EoF).

Если я пытаюсь повторно сохранить или скопировать файл (скажем, через: head file.csv> short.txt), эта специальная кодировка сохраняется. Я скопировал первые десять строк из vi (что правильно отображает) в буфер обмена Windows через мой SSH-клиент, а затем вставил его в новый текстовый файл test.txt. Этот файл визуально идентичен при открытии в vi (и похож на «head», за исключением «ÿþ»), хотя это примерно половина размера файла. Дополнительно,

file test.txt
test.txt: ASCII text
file short.txt
short.txt:

Я понятия не имею, в какой формат был конвертирован этот некогда текстовый файл (общеизвестно, что поиск символов в Интернете затруднен), но наверняка должен быть какой-то способ преобразовать его обратно. Есть идеи?

1 ответ1

2

«Ÿþ» может быть меткой порядка байтов Unicode (BOM), а ^ @ может быть первым байтом каждого 16-битного символа Unicode.

Используйте recode или iconv, чтобы преобразовать его из UTF-16 в ASCII.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .