关于字符编码的Python和Perl打印的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于字符编码的Python和Perl打印的区别相关的知识,希望对你有一定的参考价值。
我在Windows系统上。
我为perl创建了两个用于python的utf-8文件python_print.py
和用于perl的perl_print.pl
,这两个文件包含相同的行,如下所示
print("中")
和perl有;
分隔符。
我的CMD默认在code page 936
,我跑
python python_print.py
我有
中
但是,当我跑
perl perl_print.pl
这是第一次
涓
第二次运行,我得到了
为什么??
我继续测试,我运行chcp 65001
将cmd编码更改为utf-8,这次,python和perl都给出了正确的"中"
。
现在我完全糊涂了,似乎在python和perl中打印是完全不同的。似乎perl总是输出utf8字节?和python打印可以检测CMD代码页打印正确的字节?有人可以解释我的测试结果吗?
答案
perl正在打印源文件中的文字字节。除非您明确声明源文件是带有use utf8;
的utf8,否则它会将字符串视为“ xe4 xb8 xad”。
一旦你这样做,你会(如果你启用警告,你应该)得到一个Wide character in print
警告; perl要求您指定输出非ASCII字符时要使用的编码。您可以使用use open ':std' => ':encoding(cp936)';
或binmode STDOUT, ':encoding(cp936)';
或(对于某些文件句柄,您正在打开)使用open
的第3个参数。
以上是关于关于字符编码的Python和Perl打印的区别的主要内容,如果未能解决你的问题,请参考以下文章