我正在编写一个脚本,它将一个 UTF-16 编码的文本文件作为输入并输出一个 UTF-16 编码的文本文件。
use open "encoding(UTF-16)";
open INPUT, "< input.txt"
or die "cannot open > input.txt: $!\n";
open(OUTPUT,"> output.txt");
while(<INPUT>) {
print OUTPUT "$_\n"
}
假设我的程序将 input.txt 中的所有内容写入 output.txt。
这在我的 cygwin 环境中工作得非常好,它使用“这是为 cygwin-thread-multi-64int 构建的 perl 5,版本 14,subversion 2 (v5.14.2)”
但是在我的 Windows 环境中,它使用的是“这是为 MSWin32-x64-multi-thread 构建的 perl 5,版本 12,subversion 3 (v5.12.3)”,
output.txt 中的每一行除了第一行外都带有疯狂的符号。
例如:
<FIRST LINE OF TEXT>
㈀ Ⰰ ㈀Ⰰ 嘀愀 ㌀ 䌀栀椀愀 䐀⸀⸀⸀ 儀甀愀渀最 䠀ഊ<SECOND LINE OF TEXT>
...
谁能提供一些关于为什么它适用于 cygwin 而不是 windows 的见解?
编辑:按照建议打印编码层后。
在 Windows 环境中:
unix
crlf
encoding(UTF-16)
utf8
unix
crlf
encoding(UTF-16)
utf8
在 Cygwin 环境中:
unix
perlio
encoding(UTF-16)
utf8
unix
perlio
encoding(UTF-16)
utf8
唯一的区别是 perlio 和 crlf 层。