java和python的字符字节数问题
Java
- Java中的基本类型char的字节数是固定的,2个字节,默认编码是UTF-16
- Java中的字符串的字节数则是不固定的,对于英文字符,占1个字节,而对于中文字符的话,就会因为编码方式而改变:
- 如GBK编码,中文字符2个字节
- 如UTF-8编码,中文字符3个字节
- 查看方式:str1.getBytes(“utf-8”).length
Python
- Python没有基本类型,就是指字符串,原理和java类型,对于英文字符,占1个字节,而对于中文字符的话,就会因为编码方式而改变。
- 查看方式:len(str1.encode(‘gbk’))
编码转化
java中char的默认编码是UTF-16,2个字节,但实际操作系统中的默认编码一般都是UTF-8,所以在程序中如果没有指定操作系统的编码,一般都会进行UTF-16到UTF-8的编译码转换。当char的字节范围超过2个字节时,java会通过utf-16 pair的形式来解决。
1 |
|
结果:
1 |
|
对于byte和char:
byte就是1个字节,8位,int表示-128~127
char的话就是对应byte的编码表示,指定编码集后就对应char,一般不指定进行转换的话就是OS默认utf-8,char直接赋值的话存储的就是java默认utf-16
java和python的字符字节数问题
http://yoursite.com/2019/06/11/编程开发/Java/java和python的字符字节数问题/