package demo2;
import java.io.UnsupportedEncodingException;
public class EncodeDemo {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
String s = "慕课网ABC";
//将字符串转换为字节数组
byte[] bytes1 = s.getBytes();// 如果没有指定编码标,那么转换字节数组使用的是项目默认的编码规则
//历遍数组并输出
for (byte b : bytes1) {
System.out.print(Integer.toHexString(b & 0xff) + " ");
}
System.out.println();
byte[] bytes2 = s.getBytes("GBk");//使用指定gbk编码方式
// gbk编码中文占用2个字节,英文占用1个字节
for (byte b : bytes2) {
System.out.print(Integer.toHexString(b & 0xff) + " ");
}
System.out.println();
byte[] bytes3 = s.getBytes("utf-8");//使用utf-8进行字节序列化
// Utf-8编码中文占用3个字节,英文占用1个字节
for (byte b : bytes3) {
System.out.print(Integer.toHexString(b & 0xff) + " ");
}
System.out.println();
// java是双字节编码utf-16be
byte[] bytes4 = s.getBytes("utf-16be");
// utf-16be编码中英文都占用2个字节
for (byte b : bytes4) {
System.out.print(Integer.toHexString(b & 0xff) + " ");
}
System.out.println();
/*
* 当你的字节序列是某种编码时,这个时候想把字节序列变成
* 字符串,也需要使用相应的编码方式,否则会出现乱码
* 比如工程用的是GBK编码,转换时使用utf-8编码则会出现乱码
*/
//导入String中时没指定编码方式则会使用工程默认的编码方式,
// 而bytes4使用的是utf-16be编码,这样会造成乱码的情况
String str1=new String(bytes4);//没指定编码方式
System.out.println(str1);//输出乱码
String str2=new String(bytes4,"utf-16be");
System.out.println(str2);
/*
* 文本文件 就是字节序列
* 可以是任意编码的字节薛烈
* 如果我们在中文机器上直接创建文本文件,那么该文本文件默认使用ansi编码,
* 重点!!!在操作文件时,要搞清楚文件使用的编码是什么!
*/
}
}
用任何语言都要注意编码问题。