欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Java编码转换,

来源: javaer 分享于  点击 20824 次 点评:36

Java编码转换,


public class Unicode {
    public static void main(String[] args) throws UnsupportedEncodingException{
        char c='编';  // 我们都知道c占用2个字节,这毫无疑问。
        String str="张三";  
        byte[] bytes=str.getBytes("GBK"); //这个打印出来,在不同的操作系统上可能有不同的
        
        String utf8 = new String(bytes, "UTF-8");
        
        byte[] uftBytes = utf8.getBytes("UTF-8");
        
        System.out.println(new String(uftBytes, "GBK"));
}

GBK转换成UTF-8然后回转换成GBK无法还原字符

public class Unicode {
    public static void main(String[] args) throws UnsupportedEncodingException{
        char c='编';  // 我们都知道c占用2个字节,这毫无疑问。
        String str="张三";  
        byte[] bytes=str.getBytes("UTF-8"); //这个打印出来,在不同的操作系统上可能有不同的</span>
        
        String utf8 = new String(bytes, "GBK");
        
        byte[] uftBytes = utf8.getBytes("GBK");
        
        System.out.println(new String(uftBytes, "UTF-8"));
}

UTF-8转换成GBK然后回转换成UTF-8可以还原字符(必须全部是中文,如果包含英文会出错)


转码分析:


UTF-8:已三个字节存储汉字,一个字节存储英文字母。

GBK:两个字节存储汉字,一个字节存储英文字母。


如果将UTF-8转成成字符数组如果两个个汉字加一个字母则总共7个字节,

此时更加GBK编码转换成Unicde,则前六个字节可以拼装成三个字,后面一个字节GBK无法识别则用3F表示此字节则丢失了最后一个字节

那么再反向转换为UTF-8则字节已经丢失。


如果将GBK转换成UTF-8 如果两个汉字则有四个字节,然后将字节数组封装成UTF-8, UTF-8无法识别字符组对应的转码后的字符则生成unicode,变成了乱码。


相关文章

    暂无相关文章
相关栏目:

用户点评