У меня есть эти 3 файла

21/08/2014  07:15 PM               122 Tw2AWK.csv
21/08/2014  07:15 PM               125 Tw2Notepad.csv
21/08/2014  07:15 PM               119 Tw2REPL.csv

C:\myfiles> файл Tw2AWK.csv TwREPL.csv Tw2Notepad.csv

Tw2AWK.csv;     UTF-8 Unicode text, with CRLF line terminators
Tw2REPL.csv;     UTF-8 Unicode text
Tw2Notepad.csv; UTF-8 Unicode (with BOM) text, with CRLF line terminators

HEX этих файлов выглядит следующим образом

C:\myfiles> xxd -p Tw2REPL.csv

0a222344656c686947616e675261706520776173206120736d616c6c2069
6e636964656e7420746f2023536d616c6c5261706973744a6169746c6579
20646e61696e6469612e636f6d2f696e6469612f7265706f72742d69e280
a6207069632e747769747465722e636f6d2f6762565070776637744f22

C:\myfiles> xxd -p Tw2AWK.csv

0d0a222344656c686947616e675261706520776173206120736d616c6c20
696e636964656e7420746f2023536d616c6c5261706973744a6169746c65
7920646e61696e6469612e636f6d2f696e6469612f7265706f72742d69e2
80a6207069632e747769747465722e636f6d2f6762565070776637744f22
0d0a

C:\myfiles> xxd -p Tw2Notepad.csv

efbbbf0d0a222344656c686947616e675261706520776173206120736d61
6c6c20696e636964656e7420746f2023536d616c6c5261706973744a6169
746c657920646e61696e6469612e636f6d2f696e6469612f7265706f7274
2d69e280a6207069632e747769747465722e636f6d2f6762565070776637
744f220d0a

Я хочу, чтобы Tw2REPL.csv выглядел как Tw2Notepad.csv Как я могу это сделать?

ПРИМЕЧАНИЕ: я все это делаю через командную строку. Я могу использовать любой сторонний автономный exe, хотя. Я на Windows XP

Пожалуйста, помогите, это очень важно для меня

1 ответ1

2

Сначала добавьте байты ef bb bf (UTF-8 в кодировке U+FEFF) в начало файла. Это знак порядка байтов, который был изобретен для UTF-16 и не имеет особого смысла для UTF-8, хотя некоторые программы полагаются на него.

$ (echo ef bb bf; xxd -p file.csv) | xxd -r -p > file.csv.new

C:\> (echo ef bb bf & xxd -p file.csv) | xxd -r -p > file.csv.new

Затем преобразуйте конец строки Unix (LF 0a) в формат Windows (CR LF 0d 0a).

    $ unix2dos file.csv
or: $ todos file.csv
or: $ sed "s/$/\r/" file.csv > file.csv.new

Поскольку у вас есть xxd , я предполагаю, что у вас также есть Vim. Вы можете сделать это в Vim, открыв файл, а затем используя:

:set bomb ff=dos
:w

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