关于字符串存储时的数据类型如图(无耻的盗了老师的图):

 

 

 

android unicode字符串 unicode字符串类型_ico

 

一.首先在python2.x版本环境下

1.在python2.x版本中:解释过程种遇到字符串会有两种类型解释

 (1)str类型:对应的是bytes数据,就是除了unicode的其他编码方式编码后的二进制数据 —> 其他国家语言

 (2)unicode类型:对应的是unicode数据,也就是unicode编码后的二进制数据 —> 都看得懂的通用语言

2.str和unicode不要被迷惑,他们只是人为起的名字而已,而后面的代表这个类型会存成什么数据。都是二进制,只是类型不同,两者对应关系:

unicode编码成bytes

bytes解码成unicode

所有bytes都是通过unicode编码而来的

 

android unicode字符串 unicode字符串类型_android unicode字符串_02

 

3.字符串在python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。

decode的作用是将其他编码的字符串转换成unicode编码。

encode的作用是将unicode编码转换成其他编码的字符串。

因此,转码的时候一定要先搞明白,字符串str是什么编码,然后decode成unicode,然后再encode成相应的编码。必须与代码本身编码一致!

android unicode字符串 unicode字符串类型_python_03

二.在python3.x版本环境下

(1)str类型:对应的是unicode数据,也就是unicode编码后的二进制数据 —> 都看得懂的通用语言

(2)bytes类型:对应的是bytes数据,就是除了unicode的其他编码方式编码后的二进制数据 —> 其他国家语言

 总结:byes最终就是用来存储或传输用的,而unicode就是用来显示用的,将bytes转成明文。

(3)在python里面明确的将字节跟字符分开了。

 

三.内存指令。

例如在python中定义一个变量 a=1

a=1什么意思:开辟一块内存空间,python通过a对应的内存地址(门牌号)找到对应的值。

android unicode字符串 unicode字符串类型_ico_04

a=2呢:开辟一块新的内存空间,而1会被某程序占用或者回收。 

android unicode字符串 unicode字符串类型_android unicode字符串_05

 参考详细资料: