您的位置:首页 > 编程语言 > Java开发

java I/O流(1)编码

2016-07-05 11:12 453 查看
package cn.itstudy.encode;

import java.io.UnsupportedEncodingException;

public class EncodeDemo {

public static void main(String[] args) {

String s = "你好abc";
byte[] byte1 = s.getBytes();

//转换成字节序列用的是项目默认的编码,这里设置的编码是utf-8
//utf-8 中文编码3个字节,英文占用一个字节
for(byte b: byte1){

//把字节(转成了int)以十六进制的方式显示
System.out.print(Integer.toHexString(b&0xff));
//把bytezhuan成int,后8位前填24个0转成32位
}
System.out.println();

byte[] byte2;
try {
//gbk中文占用两个字节,英文占用一个字节
byte2 = s.getBytes("gbk");//这里可以改编码格式
//
for(byte b: byte2){
System.out.print(Integer.toHexString(b&0xff));
}
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println();
//java是双字节编码utf-16be,中英文都占用两个

/*
* 当你的字节序列是某种编码时,这时候想把字节序列变成字符串,
* 也需要用这种编码方式,否则会出现乱码
*/
byte[] byte4 = s.getBytes();
String str1 = new String(byte4);    //用项目默认的编码
System.out.println(str1);       //显示你好abc

String str2;
try {
str2 = new String(byte4,"utf-16be");        //与字符编码不一致会出现乱码
System.out.println(str2);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

/*
* 文本文件就是字节序列
* 可以是任意编码的字节序列
* 如果我们在中文机器上直接创建文本文件,
* 那么该文本文件只认识ansi编码
*/

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: