为何在python中“嘚“字经过lower()函数转换后会变成“噉“

问题背景:

使用python2.7版本,python脚本的编码为GBK,

#coding:gbk
s = '嘚'
print(s.lower())

复现流程:

先vi打开一个新建文件,在其中插入"嘚"字

然后执行:%!xxd,可以直接在vi中看到这个字的二进制编码为874e

将874e编辑为876e

然后执行%!xxd -r

这个时候就可以看到"噉"字出现了,因为"噉"的编码就是876e

以上现象解释如下:

python的lower()函数会扫描字符串中的大写字母,并将其转为小写字母,而4e的编码正好是大写字母"N",6e为小写字母"n"

因此如果有一个输入文件为"别嘚瑟“(其gbk编码为b1f0 874e c9aa),那么经过python的lower()函数后,就会变为gbk编码"b1f0 876e c9aa",也即"别噉瑟"

你可能感兴趣的:(python)