国外文创产品设计,网站meta 优化建议,钦州做网站的公司,网站中竖导航栏怎么做1. 字符串编码
Python3语言里面的字符串对象是unicode字符串#xff0c;在内存中实际存储时#xff0c;使用的是 UTF16 编码。但通常不会将UTF16编码的内容写到磁盘或者在网络进行传输#xff0c; 因为utf16编码比较浪费空间。特别是如果文字信息基本都是英文符号的情况下在内存中实际存储时使用的是 UTF16 编码。但通常不会将UTF16编码的内容写到磁盘或者在网络进行传输 因为utf16编码比较浪费空间。特别是如果文字信息基本都是英文符号的情况下 utf16 都会用2个字节来代表英文符号。 一个字节其实就够了。
所以Python语言要对字符串对象 进行存储和传输的时候通常要使用字符串的encode方法参数指定编码方式编码为一个 bytes 对象。
bytes对象的底层就是用一个个的字节来存储字符串中的文字的。
同样的字符串用不同的编码方式有时会产生不同的bytes结果。
比如
print (你好.encode(utf8)) # 输出 b\xe4\xbd\xa0\xe5\xa5\xbd
print (你好.encode(gbk)) # 输出 b\xc4\xe3\xba\xc3输出内容 中 b 开头表示这是一个 字节串bytes 对象
\x 说明是用16进制表示一个字节
你好 两个字使用 utf8 编码 后的字节串用16进制来表示就是6个字节 e4bda0 e5a5bd
e4bda0 对应 你
e5a5bd 对应 好你好 两个字使用 gbk 编码 后的字节串用16进制来表示 却是4个字节 c4e3 bac3
c4e3 对应 你
bac3 对应 好encode方法返回的是编码后的字节串对象bytes 编码为字节串对象 bytes 就可存储到文件或者传输到网络中去了。
2. 字节串解码
当我们的Python程序从文件中读入文字信息 从网络上接收文字信息获取的数据通常是使用某种字符编码后的 字节串。程序通常需要解码这样才方便程序理解和处理字符信息。
Python语言的解码都是解码成 unicode字符串对象。
要解码字节串必须要知道这个字节串是用什么字符编码的方式进行编码的。
如果知道了就可以用字节串对象的decode方法进行解码参数指定了编码方式
比如
print(b\xe4\xbd\xa0\xe5\xa5\xbd.decode(utf8))
print(b\xc4\xe3\xba\xc3.decode(gbk))上面的两行代码都可以解码出 字符串 ‘你好’
3. 一些字符编解码技巧
unicode数字转换为字符
把 unicode数字转换为字符 使用函数 chr() , 比如 chr(50)
2chr(20013)
中chr(0x4e2d) # 0x开头表示数字是16进制
中字符转换为unicode数字
反过来要把 字符转换为对应的unicode数字使用函数 ord()
该函数参数字符串里面只能有一个字符 ord(2)
50ord(中)
20013字符串编码为 unicode转义数字
除了utf8gbk 还有一种常见的编码方式叫做 unicode-escape 就是直接用unicode数字字符串表示字符如下所示
print(一二三四.encode(unicode-escape))
$ python main.py
b\\u4e00\\u4e8c\\u4e09\\u56db用unicode转义数字写字符串
print(\u4e00\u4e8c\u4e09\u56db)
$ python main.py
一二三四字节串 和 16进制表示字节的字符串 a bhello,123a.hex()
68656c6c6f2c313233反向操作把 16进制表示字节的字符串 转化为 字节串就是 bytes.fromhex(68656c6c6f2c313233)
bhello,123