gpt4 book ai didi

python - 关于字符编码的 Python 和 Perl 打印差异

转载 作者:行者123 更新时间:2023-11-28 20:31:36 27 4
gpt4 key购买 nike

我在windows系统上。

我分别为 python 创建了两个 utf-8 文件 python_print.py 和为 perl 创建了 perl_print.pl,这两个文件包含以下相同的行

print("中")

并且 perl 有 ; 分隔符。

我的CMD默认在code page 936,我运行

python python_print.py

我得到了


但是,当我运行

perl perl_print.pl

第一次,它给了


第二次运行,得到了

enter image description here

为什么??

我继续测试,我运行 chcp 65001 将 cmd 编码更改为 utf-8,这次,python 和 perl 都给出了正确的 "中"

现在我完全糊涂了,python和perl中的print好像还是很不一样的。似乎 perl 总是打印出 utf8 字节? python 打印可以检测到 CMD 代码页以打印正确的字节吗?有人可以解释我的测试结果吗?

最佳答案

perl 正在打印您在源文件中的文字字节。它会将字符串视为“\xe4\xb8\xad”,除非您使用 use utf8; 明确声明您的源文件是 utf8。

一旦你这样做了,你会(如果你启用了你应该的警告)得到一个Wide character in print警告; perl 要求您指定输出非 ASCII 字符时要使用的编码。您可以使用 use open ':std' => ':encoding(cp936)'; 或使用 binmode STDOUT, ':encoding(cp936)'; 或 (对于您正在打开的某些文件句柄)和 open 的第三个参数。

关于python - 关于字符编码的 Python 和 Perl 打印差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54174463/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com