我有一個文件句柄在其中包含cp1252字符的文件上打開。我想把這個打開的文件句柄放到一個需要原始utf8字節的庫中,它將通過網絡發送這些文件。Perl將文件句柄就地/從cp1252流式傳輸到utf-8?
天真的方式做到這一點是寫文件拿出來與正確的編碼第二個文件,並給第二個文件句柄到庫:
use Fcntl qw/SEEK_SET/;
open my $fh_1252, "<:encoding(cp1252)", "1252.txt" || die $!;
open my $fh_utf8, "+>:encoding(utf8)", "utf8.txt" || die $!;
while (<$fh_1252>){ print $fh_utf8 $_ };
seek($fh_utf8, 0, SEEK_SET);
# now give $fh_utf8 to the library for transmission
這似乎像一堆額外的工作。有沒有一種方法可以流式傳輸?我知道我可以使用IO :: Scalar去除寫入磁盤的需要,但是我仍然必須將整個內容讀入內存。似乎有一種方法可以用流水線進行流式處理,但我現在沒有想辦法做到這一點。
你說的是Perl庫或非perl的庫/ propgram?你能給你的操作系統命名(unix/windows)嗎? – AnFi 2014-10-03 18:26:43
注意:'open ...,「1252.txt」|| die!!;'表示開放......,(「1252.txt」|| die $!);'(它永遠不會死亡)。你想要'打開...,「1252.txt」或者死掉$ !;' – ikegami 2014-10-03 19:44:20