zoukankan      html  css  js  c++  java
  • JAVA 编码中文简述

    中文编码问题虽然是个老问题,但对不熟悉的人来说还是不好处理的。不过Java中已经有了一套比较成熟的解决方案。

    首先对中文编码格式予以简单介绍:
    中文编码有三套国标:GB2312,GBK,GB18030,从前到后互为超集。GBK最为常见。这里不展开介绍,具体可以谷歌。

    不过国际上通用的还是UTF-8,如果我们自己写中文的话,最好以UTF-8的方式编码,不然处理起来真的很麻烦。

    下面以Java读文件为例,说明一下java处理中文编码的方法。

    java可以按字符读,也可以按字节流读,不管怎么样,读中文的时候都要涉及到编码解码的问题。

    按字符读,不显式指定编码的话,一般是按本地环境的默认字符集,中文就是GBK。

    如果显式指定字节解码就要用到InputStreamReader类,它是字节转向字符的桥梁。

    它的一个构造方法: InputStreamReader(InputStream,Charset),可以显式的指定解码方式。

    如果我们知道了中文文件的编码,在Charset参数中指定,就不会出现乱码了。

    当我们用String对象保存中文时,也可以显式的指定编码方式。比如:

    String example = "中文字符串";

    byte[] b = example.getBytes("UTF-8");  //这个方法将中文重新以UTF-8的方式编码。并返回字节流数组。

    String newStr = new String(b,"UTF-8"); // 将字节流以UTF-8的方式,转化为字符串。

    实际上,getBytes()是调用Charset类来进行编码的。

    Charset类是java内部专门用于编码解码的类,更为显式。

    Charset charset = Charset.forName("UTF-8");

    ByteBuffer byteBuffer = charset.encode(String);

    CharBuffer charBuffer = charset.decode(byteBuffer);

    具体展开可以参考下面博客,讲的很清晰:

    https://www.ibm.com/developerworks/cn/java/j-lo-chinesecoding/

  • 相关阅读:
    ZOJ 3705 Applications
    UVA 220 Othello
    HDU 2084 数塔
    第五章:变量
    第四章:注释
    第三章:程序结构
    第二章:项目的创建和环境熟悉
    第一章:c#开发环境安装
    处理字段串
    查询表的列信息
  • 原文地址:https://www.cnblogs.com/zqiguoshang/p/5932282.html
Copyright © 2011-2022 走看看