博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IO流-转换流的字符编码转换-ISO-8859-1和utf-8和GBK互转
阅读量:2339 次
发布时间:2019-05-10

本文共 1906 字,大约阅读时间需要 6 分钟。

/*IO流-转换流的字符编码转换-ISO-8859-1和utf-8和GBK互转编码:字符串变成字节数组解码:字节数组变成字符串String-->byte[]:  str.getBytes();     byte[] getBytes(Charset charset)           使用给定的 charset 将此 String 编码到 byte 序列,并将结果存储到新的 byte 数组。 byte[] -->String :  new String(byte[])    String(byte[] bytes, String charsetName)           通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String。*/import java.uitl.*;class EncodeDemo{    public static void main(String[] args) throws Exception    {        String s = "你好";        byte[] b1 = s.getBytes("GBK");//编码:字符串变成字节数组 输入 参数(编码表)        System.out.println(Arrays.toString(b1));//打印 数组变成字符串         String s1 = new String(b1,"ISO8859-1");//解码:字节数组变成字符串,String参数(数组,编码表) 输出        System.out.println("s1="+s1);        //对s1进行iso8859-1编码        byte[] b2 = s1.getBytes("ISO8859-1");//拿乱码的字符串重新编码成字节数组,输入 参数(编码表)        System.out.println(Arrays.toString(b2));//打印 数组变成字符串         String s2 = new String(b2,"gbk");//解码:字节数组变成字符串,String参数(数组,编码表) 输出        System.out.println("s2="+s2);    }}//ISO8859-1和GBK互转 不会出乱码        //utf-8和GBK互转会出乱码,参考其他文章,如下/*GBK编码是一个中文2个字节,而UTF-8编码是一个中文3个字节,当我们调用getBytes("UTF-8")方法时,会通过计算来增加字节。正常的情况下是两个两个的转化,但是当字节是奇数时最后1个字节转字符就会计算错误,然后直接赋予最后这个字符为?。所以我们需要创建ISO-8859-1编码的字符串,保证一个输入只有一个输出。*/import java.io.UnsupportedEncodingException;public class new_122 {public static void main(String[] args) throws UnsupportedEncodingException {    String gbk ="我来了";    String iso = new String(gbk.getBytes("UTF-8"),"ISO-8859-1");        //构造方法 String(byte[] bytes, Charset charset)      //     通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String。    //方法 返回byte[]: getBytes(Charset charset)     //     使用给定的 charset 将此 String 编码到 byte 序列,并将结果存储到新的 byte 数组。     //构造方法里面,再加了方法,就是先编码字节数组用UTF-8,再解码字符串用ISO-8859-1    System.out.println(new String(iso.getBytes("ISO-8859-1"),"UTF-8"));    //构造方法里面,再加了方法,就是先编码字节数组用ISO-8859-1,再解码字符串用UTF-8    //总结,用ISO-8859-1做中介编码表 来 实现UTF-8 和GBK 互转,因为ISO-8859-1是单字节的,不会改变数据    }}

转载地址:http://fzzvb.baihongyu.com/

你可能感兴趣的文章
印花硅胶模压成型跟丝印成型产品有什么区别
查看>>
简述:为什么硅胶按键要使用镭雕工艺?
查看>>
在硅胶产品表面处理中,丝印、移印与镭雕的区别
查看>>
java 内存模型:重排序
查看>>
spring IOC容器:控制反转
查看>>
处理器重排序与内存屏障
查看>>
Java内存模型 之三个特性:
查看>>
Java内存 happens-before原则
查看>>
Java虚拟机:类的初始化
查看>>
Oracle表连接方法 (上)
查看>>
谈mvc
查看>>
给年轻工程师的十大忠告!
查看>>
少走弯路的十条忠告
查看>>
未婚男子必读的31条感悟
查看>>
Proteus 使用虚拟串口
查看>>
使用软件虚拟串口
查看>>
MSComm 控件
查看>>
在VC6.0及VS中添加对话框oninitdialog()函数的方法
查看>>
用控件(CMSComm)串口调试问题的解决
查看>>
Windows CE下的串口通信编程
查看>>