字符编码 and 字节和字符串转换(待补充)

Posted When you look into the abyss,

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符编码 and 字节和字符串转换(待补充)相关的知识,希望对你有一定的参考价值。

 

ascii用一个字节(8位二进制)代表一个字符

Unicode常用2个字节(16位二进制)代表一个字符,生僻字需要用四个字节

 

汉字中已经超出了ASCII编码的范围,用Unicode,

Unicode兼容ascii,也兼容万国,是世界的标准

乱码问题消失了,所有的文档我们都使用但是新问题出现了,如果我们的文档通篇都是英文,你用Unicode会比ascii耗费多一倍的空间,在存储和传输上也十分的低效

本着节约的精神,又出现了把Unicode编码转化为"可変长编码"的UTF8编码,utf8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成一个字节,汉字通常是三个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用utf8编码就能节省空间

 

utf8编码还有一个额外的好处,就是ascii编码实际上可以被看成是utf8编码的一部分,所以,大量只支持ascii编码的历史遗留软件可以在utf8编码下继续工作

python3中有两种字符串类型str和bytes

python3中str就是unicode

python2要加u的前缀才算是Unicode

 

a=呵呵
print(type(a))#<class ‘str‘>
b=bytes(a,encoding=utf8) print(b)#b‘\xe5\x91\xb5\xe5\x91\xb5‘ c=str(b,encoding=utf8) print(c)#呵呵 python3默认字符串就是Unicode
a=呵呵
#a可以直接encode成任意编码格式
b=a.encode(utf8) print(b)#字节 b‘\xe5\x91\xb5\xe5\x91\xb5‘
print(type(b))#<class ‘bytes‘>
c=b.decode(utf8)

print(c)#字符串

 

import sys
print(sys.getdefaultencoding())#可以查看默认编码

 

以上是关于字符编码 and 字节和字符串转换(待补充)的主要内容,如果未能解决你的问题,请参考以下文章

Python之路-字符编码&数据类型补充(待更新)

QR 编码原理

华为OD机试真题Java实现整数编码真题+解题思路+代码(2022&2023)

Unicode, UTF-8 and ASCII 编码问题

JAVA and JAVA WEB with TOMCAT and ECLIPSE 学习过程中遇到的字符乱码问题及解决方法汇总(随时补充)

如何将4字节utf-8的emoji表情转换为unicode字符编码