计算机之间传递,无法传输一个个字符只可以传输二进制数据,为了字节与字符的对应关系,就生成了字符码表。
将字符与相对应的字节对应起来的一个表。
ASCII 不支持汉子 美国标准信息交换码
ISO8859-1 不支持汉子 拉丁码表
GB2312 支持汉字 中文码表
GBK GB18030 支持汉字 兼容GB2312 支持更多中文
Unicode 支持汉字 国际标准编码
UTF-8 支持汉子 常用编码
编码解码 Encode Decode 字符串转化为字节 成为编码 将字节转化为字符串为解码
常用api如下:
String str="我是中国人"; byte[] bytes=str.getBytes(); byte[] bytes1=null; try { bytes1=str.getBytes("Unicode"); Log.d(TAG, "onClick: bytes=="+ Arrays.toString(bytes)); Log.d(TAG, "onClick: bytes1=="+Arrays.toString(bytes1)); Log.d(TAG, "onClick: String(bytes=="+new String(bytes)); Log.d(TAG, "onClick: String(bytesUTF=="+new String(bytes1,"UTF-8")); Log.d(TAG, "onClick: String(bytesUnicode=="+new String(bytes1,"Unicode")); Log.d(TAG, "onClick: String(bytesISO=="+new String(bytes1,"ISO-8859-1")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); Log.d(TAG, "onClick: e=="+e.toString()); }
没有指定编码格式 系统采用默认编码格式 中文会采用GBK
采用Arrays.toString() 将字节数组的转化为对应的字节字符串
注意:不是说只要采用同一种编码格式编码解码就不会出现线乱码
前提是这种编码格式支持你的这种语音 比如汉语就只能使用上面个别的编码格式。