Perl不识别非ascii字符

时间:2017-08-24 06:49:04

标签: perl encoding character-encoding

我的*TXT文件包含非ASCII字符,例如{。{1}}。但é ê ù文件模式位于*TXT(默认模式)。

我在Perl ANSI中用于读取非ASCII字符并转换为utf8

问题是如果hexadecimal entities文件具有*TXT模式,那么Perl不起作用,但是ANSI模式在*TXT中,那么脚本正在运行问题

的Perl:

utf8

有人有解决方案吗?

1 个答案:

答案 0 :(得分:2)

如果它不是UTF-8,那么当你告诉Perl它的UTF-8时它当然不会工作!

" ANSI"您可以通过将cp添加到Win32::GetACP()返回的数字来获取您机器的编码。

use Win32 qw( );
my $ansi_enc = "cp".Win32::GetACP();
open(my $fh, "<:encoding($ansi_enc)", $qfn)  # File encoded using machine's ANSI encoding.

而不是

open(my $fh, "<:encoding(UTF-8)", $qfn)  # File encoded using UTF-8.