关于Python ord()和chr()返回ASCII码和Unicode码的看法

刚开始学这两个函数的时候,看到书上说的是返回Unicode码,
关于Python ord()和chr()返回ASCII码和Unicode码的看法_第1张图片
但是自己去百度之后,发现很多人都说返回是ASCII
关于Python ord()和chr()返回ASCII码和Unicode码的看法_第2张图片
关于Python ord()和chr()返回ASCII码和Unicode码的看法_第3张图片
为什么会这样呢?

那么为了不误解 ,我们先介绍下Unicode码和ASCII码

ASCII
美国(国家)信息交换标准(代)码,一种使用7个或8个二进制位进行编码的方案,最多可以给256个字符
(包括字母、数字、标点符号、控制字符及其他符号)分配(或指定)数值

Unicode(万国码)
如果有一种编码,将世界上所有的符号都纳入其中,无论是英文、日文、还是中文等,大家都使用这个编码表,就不会出现编码不匹配现象。每个符号对应一个唯一的编码,乱码问题就不存在了。这就是Unicode编码

简单来说:Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。
区别:
ASCII:不支持中文,1个英文占1个字节
Unicode(万国码,支持所有国家的文字显示):支持中文,但是每个英文和中文都占2个字节

那么为什么会出现有的说ASCII有的说Unicode码的呢?

划重点

因为Python的诞生比Unicode标准发布的时间还要早,所以最早的Python只支持ASCII编码,普通的字符串’ABC’在Python内部都是ASCII编码的。,但是在Unicode标准发布以后 新版的Python,就开始逐渐基于Unicode码了

所以这是为什么会说ord()返回会出现不同的原因

这是Python2的时候介绍⬇

ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值

但是在Python3之后
unichr函数取消了 因为Python3中的chr()不仅仅支持Ascii的转换,直接支持了更为适用的Unicode转换

但是Unicode码的0-127和ASCII码还是一样的,所以不用担心ASCII不能用的问题

*127-255的扩展ASCII码和Unicode是不同的 这点要注意*

问题到这里就差不多了,还有一些更深入的我们就不说了,
总之时代在发展,Python也在不断改版,努力学习才不会落伍,

你可能感兴趣的:(Python学习)