gpt4 book ai didi

Windows Perl --> Unix 在移植后不工作,可能是编码问题

转载 作者:可可西里 更新时间:2023-11-01 10:56:32 25 4
gpt4 key购买 nike

我有一个在 Windows 上编写的 Perl 程序。它开始于:

$unused_header = <STDIN>;
my @header_fields = split('\|\^\|', $unused_header, -1);

它应该拆分由一个非常大的文件组成的输入:

The|^|Quick|^|Brown|^|Fox|!|

进入:

{The, Quick, Brown, Fox|!|}

注意:这条线只做headre,还有另一条类似的线做重复的数据线。

它在 windows 上运行良好,但在 linux 上却失败了。但是,如果我在 Perl 中定义一个具有相同内容的字符串,并对其运行拆分,它就可以正常工作。

我认为这是一个 UTF-16 编码处理问题,但我不确定如何处理它。有谁知道我如何让 perl 理解通过管道传输到 STDIN 的 UTF-16?

我找到了:http://www.haboogo.com/matching_patterns/2009/01/utf-16-processing-issue-in-perl.html但我不确定如何处理它。

最佳答案

如果 STDIN 是 UTF-16,请使用以下之一

binmode(STDIN, ':encoding(UTF-16le)');   # Byte order used by Windows.
binmode(STDIN, ':encoding(UTF-16be)'); # The other byte order.
binmode(STDIN, ':encoding(UTF-16)'); # Use BOM to determine byte order.

关于Windows Perl --> Unix 在移植后不工作,可能是编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12573798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com