我如何更改此文件编码?

我如何更改此文件编码?

我有这 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

首先,将字节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

相关内容