1 . 将byte数组转化成string字符串
byte[] bs2 = string.getBytes("gbk");
String string3 = new String(bs2,"gbk");
2 . 将字符串数组转成byte数组
String string = "就不让你们下课,就让你们上课";
byte[] bs = string.getBytes();
3 . String类默认的编码方式是GBK
4 .
* GBK 一个汉字 转成 字节 占2个字节
* 一个字母 占2 字节
* UTF-8 一个汉字 是 3个字节
* 一个字母 1 个字节
*
* 乱码的原因:
* 1 字节的缺失
* 2 编码格式的不同
*
* 编码格式不同 同样的二进制数字 代表的内容 可能不同.
*
编码
* 机器语言 —> 高级语言
解码:
* 高级语言 —> 机器语言
代码:
package com.qf.demo5;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
/**
* GBK 一个汉字 转成 字节 2个字节
* 一个字母 2 字节
* UTF-8 一个汉字 是 3个字节
* 一个字母 1 个字节
*
* 乱码的原因:
* 1 字节的缺失
* 2 编码格式的不同
*
* 编码格式不同 同样的二进制数字 代表的内容 可能不能
*
* 编码 : 00001 --> a
* gb2312
*
* 机器语言 ---> 高级语言
* 解码:
* 高级语言 ---> 机器语言
*
*
* @author Administrator
*
*/
public class Test3 {
public static void main(String[] args) {
String string = "就不让你们下课,就让你们上课";
//存进byte数组是编码 按照unicode格式
byte[] bs = string.getBytes();
//但是String是默认的GBK , 所以string2 会乱码
String string2 = new String(bs, 1, 5);
System.out.println(string2);
// 默认 是 GBK
// UTF-8
try {
//String 默认是 gbk
// 解码用的 utf-8
//存进去时用 gbk格式
byte[] bs2 = string.getBytes("gbk");
//取数据也是用gbk格式 则不会出现乱码
String string3 = new String(bs2,"gbk");
System.out.println(string3);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}