Perl使用mojibake生成错误消息
我正在学习Perl,并在系统控制台中执行一个脚本,该脚本显示以下奇怪的字符:Perl使用mojibake生成错误消息,perl,Perl,我正在学习Perl,并在系统控制台中执行一个脚本,该脚本显示以下奇怪的字符: open(my $fh, '<', 'teste') or warn $! Arquivo ou diretório não encontrado at reply input line 1. 在我的系统中,我: LANG=pt_BR.UTF-8 LANGUAGE=pt_BR:pt:en LC_CTYPE=pt_BR.UTF-8 LC_NUMERIC="pt_BR.UTF-8" LC_TIME="pt_BR
open(my $fh, '<', 'teste') or warn $!
Arquivo ou diretório não encontrado at reply input line 1.
在我的系统中,我:
LANG=pt_BR.UTF-8
LANGUAGE=pt_BR:pt:en
LC_CTYPE=pt_BR.UTF-8
LC_NUMERIC="pt_BR.UTF-8"
LC_TIME="pt_BR.UTF-8"
LC_COLLATE="pt_BR.UTF-8"
LC_MONETARY="pt_BR.UTF-8"
LC_MESSAGES="pt_BR.UTF-8"
LC_PAPER="pt_BR.UTF-8"
LC_NAME="pt_BR.UTF-8"
LC_ADDRESS="pt_BR.UTF-8"
LC_TELEPHONE="pt_BR.UTF-8"
LC_MEASUREMENT="pt_BR.UTF-8"
LC_IDENTIFICATION="pt_BR.UTF-8"
LC_ALL=
我的候机楼是由我来处理的
如何解决这个问题?不是Perl,而是终端设置 正如@MattJacob所指出的,它可能会在终点站出现 我刚刚在注册表中做了一个测试:
regedit /ea "D:\putty.reg.old" HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions
翻译>远程字符集中putty的GUI默认显示UTF-8编码。但它没有设置。所以我只需将其更改为任何编码,保存会话并再次将其保存到putty.reg中以进行文件比较
fc putty.reg.old putty.reg
***** putty.reg.old
"Wordness224"="2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2"
"LineCodePage"=""
"CJKAmbigWide"=dword:00000000
***** PUTTY.REG
"Wordness224"="2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2"
"LineCodePage"="ISO-8859-1:1998 (Latin-1, West Europe)"
"CJKAmbigWide"=dword:00000000
*****
现在我们看到“LineCodePage”=”是空的。现在选择UTF-8应该可以了
fc putty.reg.old putty.reg
***** putty.reg.old
"Wordness224"="2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2"
"LineCodePage"=""
"CJKAmbigWide"=dword:00000000
***** PUTTY.REG
"Wordness224"="2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2"
"LineCodePage"="UTF-8"
"CJKAmbigWide"=dword:00000000
*****
让我们进入服务器并进行测试
~(master ✗) perl -e 'open(my $fh, "<", "teste") or warn $!'
Arquivo ou diretório não encontrado at -e line 1.
~(master✗) perl-e'open(my$fh),“你在使用哪个终端?好问题@MattJacob:putty。但是我可以告诉你,Translation>Remote字符集是UTF-8,还有什么我必须设置的吗?”?
~(master ✗) perl -e 'open(my $fh, "<", "teste") or warn $!'
Arquivo ou diretório não encontrado at -e line 1.