zoukankan      html  css  js  c++  java
  • 字符编码

    查看支持哪些字符编码:

    package com.nio;
    
    import java.nio.charset.Charset;
    import java.util.Map;
    import java.util.Set;
    import java.util.SortedMap;
    
    /**
     * 字符集:charset
     * 编码:字符串->字节数组
     * 解码:字节数组->字符串
     */
    public class TestCharset {
        public static void main(String[] args) {
            //查看Charset支持的字符编码
            SortedMap<String, Charset> map = Charset.availableCharsets();
            Set<Map.Entry<String, Charset>> entries = map.entrySet();
            for (Map.Entry<String, Charset> entry : entries) {
                System.out.println(entry.getKey()+"="+entry.getValue());
            }
        }
    }
    

      

    运行结果:

     

    Big5=Big5
    Big5-HKSCS=Big5-HKSCS
    CESU-8=CESU-8
    EUC-JP=EUC-JP
    EUC-KR=EUC-KR
    GB18030=GB18030
    GB2312=GB2312
    GBK=GBK
    IBM-Thai=IBM-Thai
    IBM00858=IBM00858
    IBM01140=IBM01140
    IBM01141=IBM01141
    IBM01142=IBM01142
    IBM01143=IBM01143
    IBM01144=IBM01144
    IBM01145=IBM01145
    IBM01146=IBM01146
    IBM01147=IBM01147
    IBM01148=IBM01148
    IBM01149=IBM01149
    IBM037=IBM037
    IBM1026=IBM1026
    IBM1047=IBM1047
    IBM273=IBM273
    IBM277=IBM277
    IBM278=IBM278
    IBM280=IBM280
    IBM284=IBM284
    IBM285=IBM285
    IBM290=IBM290
    IBM297=IBM297
    IBM420=IBM420
    IBM424=IBM424
    IBM437=IBM437
    IBM500=IBM500
    IBM775=IBM775
    IBM850=IBM850
    IBM852=IBM852
    IBM855=IBM855
    IBM857=IBM857
    IBM860=IBM860
    IBM861=IBM861
    IBM862=IBM862
    IBM863=IBM863
    IBM864=IBM864
    IBM865=IBM865
    IBM866=IBM866
    IBM868=IBM868
    IBM869=IBM869
    IBM870=IBM870
    IBM871=IBM871
    IBM918=IBM918
    ISO-2022-CN=ISO-2022-CN
    ISO-2022-JP=ISO-2022-JP
    ISO-2022-JP-2=ISO-2022-JP-2
    ISO-2022-KR=ISO-2022-KR
    ISO-8859-1=ISO-8859-1
    ISO-8859-13=ISO-8859-13
    ISO-8859-15=ISO-8859-15
    ISO-8859-2=ISO-8859-2
    ISO-8859-3=ISO-8859-3
    ISO-8859-4=ISO-8859-4
    ISO-8859-5=ISO-8859-5
    ISO-8859-6=ISO-8859-6
    ISO-8859-7=ISO-8859-7
    ISO-8859-8=ISO-8859-8
    ISO-8859-9=ISO-8859-9
    JIS_X0201=JIS_X0201
    JIS_X0212-1990=JIS_X0212-1990
    KOI8-R=KOI8-R
    KOI8-U=KOI8-U
    Shift_JIS=Shift_JIS
    TIS-620=TIS-620
    US-ASCII=US-ASCII
    UTF-16=UTF-16
    UTF-16BE=UTF-16BE
    UTF-16LE=UTF-16LE
    UTF-32=UTF-32
    UTF-32BE=UTF-32BE
    UTF-32LE=UTF-32LE
    UTF-8=UTF-8
    windows-1250=windows-1250
    windows-1251=windows-1251
    windows-1252=windows-1252
    windows-1253=windows-1253
    windows-1254=windows-1254
    windows-1255=windows-1255
    windows-1256=windows-1256
    windows-1257=windows-1257
    windows-1258=windows-1258
    windows-31j=windows-31j
    x-Big5-HKSCS-2001=x-Big5-HKSCS-2001
    x-Big5-Solaris=x-Big5-Solaris
    x-euc-jp-linux=x-euc-jp-linux
    x-EUC-TW=x-EUC-TW
    x-eucJP-Open=x-eucJP-Open
    x-IBM1006=x-IBM1006
    x-IBM1025=x-IBM1025
    x-IBM1046=x-IBM1046
    x-IBM1097=x-IBM1097
    x-IBM1098=x-IBM1098
    x-IBM1112=x-IBM1112
    x-IBM1122=x-IBM1122
    x-IBM1123=x-IBM1123
    x-IBM1124=x-IBM1124
    x-IBM1166=x-IBM1166
    x-IBM1364=x-IBM1364
    x-IBM1381=x-IBM1381
    x-IBM1383=x-IBM1383
    x-IBM300=x-IBM300
    x-IBM33722=x-IBM33722
    x-IBM737=x-IBM737
    x-IBM833=x-IBM833
    x-IBM834=x-IBM834
    x-IBM856=x-IBM856
    x-IBM874=x-IBM874
    x-IBM875=x-IBM875
    x-IBM921=x-IBM921
    x-IBM922=x-IBM922
    x-IBM930=x-IBM930
    x-IBM933=x-IBM933
    x-IBM935=x-IBM935
    x-IBM937=x-IBM937
    x-IBM939=x-IBM939
    x-IBM942=x-IBM942
    x-IBM942C=x-IBM942C
    x-IBM943=x-IBM943
    x-IBM943C=x-IBM943C
    x-IBM948=x-IBM948
    x-IBM949=x-IBM949
    x-IBM949C=x-IBM949C
    x-IBM950=x-IBM950
    x-IBM964=x-IBM964
    x-IBM970=x-IBM970
    x-ISCII91=x-ISCII91
    x-ISO-2022-CN-CNS=x-ISO-2022-CN-CNS
    x-ISO-2022-CN-GB=x-ISO-2022-CN-GB
    x-iso-8859-11=x-iso-8859-11
    x-JIS0208=x-JIS0208
    x-JISAutoDetect=x-JISAutoDetect
    x-Johab=x-Johab
    x-MacArabic=x-MacArabic
    x-MacCentralEurope=x-MacCentralEurope
    x-MacCroatian=x-MacCroatian
    x-MacCyrillic=x-MacCyrillic
    x-MacDingbat=x-MacDingbat
    x-MacGreek=x-MacGreek
    x-MacHebrew=x-MacHebrew
    x-MacIceland=x-MacIceland
    x-MacRoman=x-MacRoman
    x-MacRomania=x-MacRomania
    x-MacSymbol=x-MacSymbol
    x-MacThai=x-MacThai
    x-MacTurkish=x-MacTurkish
    x-MacUkraine=x-MacUkraine
    x-MS932_0213=x-MS932_0213
    x-MS950-HKSCS=x-MS950-HKSCS
    x-MS950-HKSCS-XP=x-MS950-HKSCS-XP
    x-mswin-936=x-mswin-936
    x-PCK=x-PCK
    x-SJIS_0213=x-SJIS_0213
    x-UTF-16LE-BOM=x-UTF-16LE-BOM
    X-UTF-32BE-BOM=X-UTF-32BE-BOM
    X-UTF-32LE-BOM=X-UTF-32LE-BOM
    x-windows-50220=x-windows-50220
    x-windows-50221=x-windows-50221
    x-windows-874=x-windows-874
    x-windows-949=x-windows-949
    x-windows-950=x-windows-950
    x-windows-iso2022jp=x-windows-iso2022jp
    

     

      

    编码解码小案例:

    package com.nio;
    
    import java.nio.ByteBuffer;
    import java.nio.CharBuffer;
    import java.nio.charset.CharacterCodingException;
    import java.nio.charset.Charset;
    import java.nio.charset.CharsetDecoder;
    import java.nio.charset.CharsetEncoder;
    
    /**
     * 字符集
     * 编码和解码的小案例
     */
    public class TestCharsetDemo {
        public static void main(String[] args) throws CharacterCodingException {
            Charset cs1 = Charset.forName("GBK");
            //获取解码器
            CharsetEncoder ce = cs1.newEncoder();
            //获取解码器
            CharsetDecoder cd = cs1.newDecoder();
            CharBuffer cBuf = CharBuffer.allocate(1024);
            cBuf.put("张家口加油!");
            cBuf.flip();
    
            //编码
            ByteBuffer bBuf = ce.encode(cBuf);
            for (int i=0;i<12;i++) {
                System.out.println(bBuf.get());
            }
    
            //解码
            bBuf.flip();
            CharBuffer cBuf2 = cd.decode(bBuf);
            System.out.println(cBuf2.toString());
    
            //解码 使用utf-8进行解码
            Charset cs2 = Charset.forName("UTF-8");
            bBuf.flip();
            CharBuffer cBuf3 = cs2.decode(bBuf);
            System.out.println(cBuf3.toString());
    
        }
    }
    

      

    运行结果:

     

    -43
    -59
    -68
    -46
    -65
    -38
    -68
    -45
    -45
    -51
    -93
    -95
    张家口加油!
    �żҿڼ��ͣ�
    

     

      

    由此可见,当编码和解码的方式不同的时候,会出现乱码。这在实际项目开发过程中一定要注意。

     

    当客户端向服务端发送一个读写请求的时候,服务端无法判断读写请求中信息真实有效的时候,就会陷入阻塞状态。

     

     

  • 相关阅读:
    【嵌入式】arm-linux-gcc/ld/objcopy/objdump参数概述
    【Java】Java复习笔记-第四部分
    【C/C++】C语言复习笔记-17种小算法-解决实际问题
    【Java】Java复习笔记-三大排序算法,堆栈队列,生成无重复的随机数列
    【Java】Java复习笔记-第三部分
    【教程】ubuntu下安装NFS服务器
    【Java】Java复习笔记-第二部分
    【Java】Java复习笔记-第一部分
    【教程】ubuntu下安装samba服务器
    【C/C++】一道试题,深入理解数组和指针
  • 原文地址:https://www.cnblogs.com/dongyaotou/p/14414224.html
Copyright © 2011-2022 走看看