Java中CharSet字符集


java.nio.charset包中提供了Charset類,它繼承了Comparable接口;還有CharsetDecoder、CharsetEncoder編碼和解碼的類,它們都是繼承Object類。

Java中的字符使用Unicode編碼,每個字符占用兩個字節,16個二進制位,向ByteBuffer中存放數據的時候需要考慮字符的編碼,從中讀取的時候也需要考慮字符的編碼方式,也就是編碼和解碼。

1.獲取字符集有如下兩種方式

//返回指定的字符集CharSet
Charset charset = Charset.forName("utf8");
//返回虛擬機默認的字符集CharSet
Charset charset = Charset.defaultCharset();

2.接下來我們使用字符集CharSet創建一個編碼器和一個解碼器

//編碼器
CharsetEncoder encoder = charset.newEncoder();
//解碼器
CharsetDecoder decoder = charset.newDecoder();

3.使用編碼器和解碼器解析數據

//編碼,傳入CharBuffer
ByteBuffer bytebuffer = encoder.encode(in);
//解碼,傳入ByteBuffer
CharBuffer charbuffer = decoder.decode(in);

4.具體使用案例

    public static void main(String[] args)  {
        Charset charset = Charset.forName("utf8");
        System.out.println(charset.name()+"--"+charset.canEncode());
        //返回一個包含該字符的別名,字符集的別名是不可變的
        Set<String> set = charset.aliases();
        Iterator<String> it = set.iterator();
        while(it.hasNext()) {
            System.out.println(it.next());
        }

        System.out.println("----------編碼----------------");
        ByteBuffer buffer = charset.encode("sdf");
        System.out.println(buffer);

        System.out.println("緩沖區剩余的元素數--"+buffer.remaining());
        while(buffer.hasRemaining()) {
            System.out.println((char)buffer.get());
        }
        System.out.println("緩沖區剩余的元素數--"+buffer.remaining());
        System.out.println("----------解碼----------------");
        //清空緩沖區,將限制設置恢復,如果定義了標記,則將它們丟棄
        buffer.flip();
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM