我遇到过这种情况:我有一个 Java 程序,它首先写入一个文本文件,然后调用“CMD /C CLIP < textfile”,以便能够将任意大的文件放在 Windows 剪贴板上。效果很好。
现在我发现存在编码问题,因此我确保我有一个有效的 UTF-8 编码文件(包括 BOM,并且它在 vim 中正确打开),但看起来 CLIP.EXE 不遵守 BOM 来将预期编码更改为 UTF-8。
那么,我应该如何告诉 Windows 和/或 CLIP.EXE 该文件是 UTF-8 编码的并相应地处理它?(如果其他编码(如 UTF-16 或 UTF-32)更适合 Unicode,我可以使用它)。
显示该行为的系统是 Windows 7,CMD.EXE 中的默认代码页是 850。我需要它在我无法控制的系统上运行。
答案1
在我的 Windows 7 上,UTF-16 对我来说是可行的(我的 OEM(“cmd”)代码页是 437,但这无关紧要)。
我如何测试:
- 打开记事本,输入一些非 ASCII 文本(或者从一些有很多语言的网站复制,比如http://wikipedia.org
- 另存为,选择编码:Unicode(即UTF-16),另存为UTF16.txt
- 在cmd中,输入
clip < UTF16.txt
- 打开新记事本,粘贴
结果:文本正确显示。