Perl使用mojibake生成错误消息

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

我正在学习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.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.