我有*TXT
文件,其中包含非ASCII字符,例如é ê ù
。但*TXT
文件模式为ANSI
(默认模式)。Perl无法识别非ASCII字符
我在Perl utf8
中用于读取非ASCII字符并将其转换为hexadecimal entities
。
的问题是,如果具有*TXT
文件ANSI
模式,则Perl不工作,但是*TXT
模式是utf8
则脚本运行没有问题。
的Perl:
use open ':encoding(utf8)';
binmode STDOUT, ':utf8';
...
#assume $amatch contains non-ascii characters
$amatch = ord($amatch);
$amatch = sprintf("&#x%x;", $amatch);
不要任何人有这个解决方案?
你没有表现如何打开并从特定文件中读取数据。但是,如果您从STDIN中读取,则明确设置了代码的第一行,表明您期望数据是UTF8编码的 - 在这种情况下,如果数据不是UTF8编码,那么它当然会失败。 –
我相信诺言不清楚 – ssr1012
提示:常用编码的名称是“UTF-8”。 “UTF8”是你不想要的东西。 – ikegami