Ich glaube, viele Freunde stoßen bei der Verwendung der Programmiersprache Perl oft auf dieses Problem: Perl unterstützt kein Chinesisch? Bei der Eingabe oder Ausgabe von Chinesisch in Perl entsteht Zeichensalat. Was sollen wir dann tun? Im Folgenden werde ich Freunden beibringen, wie sie dieses Problem lösen.

Methode/Schritte
Nehmen wir ActivePerl unter Windows als Beispiel.
Mein Code ist sehr einfach, nur eine Zeile:
print "你好";
Aber es trat Zeichensalat auf, wie in der Abbildung gezeigt.

Was sollten wir tun, wenn wir auf ein solches Problem stoßen?
Es ist tatsächlich ein Perl-Kodierungsproblem, und es hängt mit der Kodierung unseres Betriebssystems zusammen.
Wir öffnen die cmd-Eingabeaufforderung und geben chcp ein, um den Code des Kodierungstyps zu erhalten.
Man kann sehen, dass Windows hier Codepage 936 als Standardkodierungsformat verwendet.

Dann können wir sehen, dass Codepage 936 gb2313 entspricht (das heißt Chinesisch), oder vielmehr gbk.

Da wir nun wissen, dass unser Windows gb2312-Kodierung verwendet, müssen wir nur das Kodierungsformat ändern.
Geben Sie Folgendes oben im Code ein:
use utf8; #引入utf8模块 脚本内的字符串使用utf8作为编码格式 binmode(STDOUT,":encoding(gbk)"); #标准输出使用gbk作为编码格式,也可以把gbk改为gb2312 binmode(STDIN,":encoding(gbk)"); #如果涉及到输入流,例如读文件,不加这条读中文文件会出现乱码 binmode(STDERR,":encoding(gbk)"); #如果异常错误中的字符串有中文,请加上STDERR,否则也会出现乱码 print "你好";
Kann an diesem Punkt Chinesisch normal ausgegeben werden?
Eines ist zu beachten: Wenn der Code das Lesen chinesischer Dateien beinhaltet, fügen Sie unbedingtAdd binmode(STDIN,":encoding(gbk)"); hinzu.。


Es gibt eine weitere Methode: Für STDIN, STDOUT, STDERR (d. h. Standardeingabe, Standardausgabe und Standardfehler) wird jeweils eine bestimmte Kodierung als Kodierungsformat verwendet.
Noch immer dasselbe einfache kleine Programm, das print verwendet, um eine chinesische Zeichenkette auszugeben.
Der Code lautet wie folgt:
use utf8; use open ":encoding(gbk)",":std"; #标准输入、输出、错误皆用gbk编码格式进行编码 print "你好";


Original-URL: https://jingyan.baidu.com/article/4f7d5712fd36301a21192744.html