1 JAVA中字符的表达
JAVA中有char、byte、String这几个概念。
char 指的是一个UNICODE字符,为16位的整数。
byte 是字节,字符串在网络传输或存储前需要转换为byte数组。在从网络接收或从存储设备读取后需要将byte数组转换成String。
String是字符串,可以看成是由char组成的数组。
String 和 char 为内存形式,byte是网络传输或存储的序列化形式。
举例:
D1 0 1 2 3 4 5 6 7 8 9 A B C D E F
4 袬 袮 袯 袰 袲 袳 袴 袵 袶 袸 袹 袺 袻 袽 袾 袿
5 裀 裃 裄 裇 裈 裊 裋 裌 裍 裏 裐 裑 裓 裖 裗 裚
6 裛 補 裝 裞 裠 裡 裦 裧 裩 裪 裫 裬 裭 裮 裯 裲
7 裵 裶 裷 裺 裻 製 裿 褀 褁 褃 褄 褅 褆 複 褈
8 褉 褋 褌 褍 褎 褏 褑 褔 褕 褖 褗 褘 褜 褝 褞 褟
9 褠 褢 褣 褤 褦 褧 褨 褩 褬 褭 褮 褯 褱 褲 褳 褵
A 褷 选 癣 眩 绚 靴 薛 学 穴 雪 血 勋 熏 循 旬 询
B 寻 驯 巡 殉 汛 训 讯 逊 迅 压 押 鸦 鸭 呀 丫 芽
C 牙 蚜 崖 衙 涯 雅 哑 亚 讶 焉 咽 阉 烟 淹 盐 严
D 研 蜒 岩 延 言 颜 阎 炎 沿 奄 掩 眼 衍 演 艳 堰
E 燕 厌 砚 雁 唁 彦 焰 宴 谚 验 殃 央 鸯 秧 杨 扬
F 佯 疡 羊 洋 阳 氧 仰 痒 养 样 漾 邀 腰 妖 瑶
GBK编码表中的‘燕’字
String yan = “燕”;
char cyan = yan.charAt(0); //返回第0位的字符
String yanHex = Integer.toHexString(cyan); //字符和整数同是16位
71 d5
byte yanGBBytes = yan.getBytes(“GBK”); //转换成字节
GBK编码的字节数值
D1 E0
2 编码方式的简介
String序列化成byte数组或反序列化时需要选择正确的编码方式。如果编码方式不正确,就会得到一些0x3F的值。常用的字符编码方式有ISO8859_1、GB2312、GBK、UTF-8/UTF-16/UTF-32。
ISO8859_1用来编码拉丁文,它由单字节(0-255)组成。
GB2312、GBK用来编码简体中文,它有单字节和双字节混合组成。最高位为1的字节和下一个字节构成一个汉字,最高位为0的字节是ASCII码。
UTF-8/UTF-16/UTF-32是国际标准UNICODE的编码方式。 用得最多的是UTF-8,主要是因为它在对拉丁文编码时节约空间。
UNICODE值 UTF-8编码
U-00000000 - U-0000007F: 0xxxxxxx
U-00000080 - U-000007FF: 110xxxxx 10xxxxxx
U-00000800 - U-0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx
U-00010000 - U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
U-00200000 - U-03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
U-04000000 - U-7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx