我在寫一個腳本,它以UTF-16編碼的文本文件作爲輸入並輸出一個UTF-16編碼的文本文件。UTF-16 perl輸入輸出
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的線程多64int內置的Perl 5,版本14,顛覆2(v5.14.2)」
但在我的Windows環境,它使用「這是perl 5,版本12,爲MSWin32-x64-multi-thread構建的subversion 3(v5.12.3)」,
output.txt中的每一行都預先添加了瘋狂的符號第一行。
例如:
<FIRST LINE OF TEXT>
㈀ Ⰰ ㈀Ⰰ 嘀愀 ㌀ 䌀梔椀愀 䐀⸀⸀⸀ 儀甀愀渀最 䠀ഊ<SECOND LINE OF TEXT>
...
誰能給出爲什麼它在Cygwin上而不是窗戶的一些見解?
編輯:按照建議打印編碼圖層後。
在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層之間。
也許那些「瘋狂的符號」是無論你正在使用查看它們不顯示UTF16窗口;) –
我使用記事本+ +顯示output.txt的。如果我使用cygwin運行腳本並生成文件,它工作得很好,但當我使用Windows運行腳本時,它也充滿了瘋狂的符號 – allenylzhou
嘗試將Windows Perl升級到5.14或5.16,這將消除這種可能性一個5.12的錯誤。可以是[Strawberry Perl](http://strawberryperl.com/)或[ActivePerl](http://www.activestate.com/activeperl/downloads)。 – Schwern