概述
第一部分 涉及到的字符编码集说明
ASCII编码:
由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码。
Unicode编码:
Unicode把所有语言都统一到一套编码里。Unicode标准最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。现代操作系统和大多数编程语言都直接支持Unicode。
UTF-8编码:
统一成Unicode编码,乱码问题从此消失。但是,如果文本全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。
因此,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间。
GBK编码:
GBK全称《汉字内码扩展规范》,GBK是采用单双字节变长编码,英文使用单字节编码,完全兼容ASCII字符编码,中文部分采用双字节编码。
GBK分两段,ASCII段和中文段。ASCII段使用单字节,和ASCII编码保持一致;中文(及特殊符号)段使用双字节编码。在双字节段中,第一字节的范围是81–FE(也就是不含80和FF),第二字节的一部分领域在40–7E,其他领域在80–FE2。也就是说,在GBK编码中,中文有两个字节,首字节范围81-FE,尾字节范围40-7E。
第二部分 java和c++的字节,字符,字符串
在java里:
类型名 | 符号类型 | 字节大小 | 编码方式 |
---|---|---|---|
byte | 有符号 | 1 | ASCII |
char | 无符号 | 2 | Unicode |
String | - | - | Unicode |
byte 是字节数据类型 ,是有符号型的,占1 个字节,大小范围为-128—127 。
char 是字符数据类型 ,是无符号型的,占2字节,大小范围 是0—65535 。
String是一个类,可以存储一个或者多个char。
在C++里(其中一种的情况,c++会随着机器环境改变,很烦)
类型名 | 符号类型 | 字节大小 | 编码方式 |
---|---|---|---|
char | 有符号(可能跟环境有关) | 1 | 常规ASCII,汉字就GBK(跟环境有关) |
wchar_t | 有符号(可能跟环境有关) | 2 | Unicode |
string | - | - | 常规ASCII,汉字就GBK(跟环境有关) |
wstring | - | - | Unicode |
你可以用string存中文串,但是一个中文会占两个字节,使用的是GBK的编码方式。用wstring,应该就是unicode的编码方式了。
你用汉字给char赋值也不会报错,但是汉字的字节会被截断,只留下一个字节,结果可能跟你要的不一样,具体还是看机器。
byte不是基础数据类型,一般是typedef unsigned char byte。
char是基础符号类型,8位,1个字节(和java的byte一样)。
wchar_t是基础符号类型,16位,2个字节(和java的char一样)。
string使用的是char类型,char组成的字符串。
wstring,使用的是wchar_t类型,w_char组成的字符串。
小结
C++的相关内容版本太杂太多,还是Java的统一的格式来比较令人舒适。
最后
以上就是要减肥铃铛为你收集整理的java和C++的byte,char,string以及涉及到的字符编码集的说明。的全部内容,希望文章能够帮你解决java和C++的byte,char,string以及涉及到的字符编码集的说明。所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复