我的*TXT
文件包含非ASCII字符,例如{。{1}}。但é ê ù
文件模式位于*TXT
(默认模式)。
我在Perl ANSI
中用于读取非ASCII字符并转换为utf8
。
问题是如果hexadecimal entities
文件具有*TXT
模式,那么Perl不起作用,但是ANSI
模式在*TXT
中,那么脚本正在运行问题
的Perl:
utf8
有人有解决方案吗?
答案 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.