各字符集編碼範圍總結

| |
[不指定 2017/04/26 23:24 | by 太極判官 ]
UTF8
[\x01-\x7f]|[\xc0-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}

UTF16
[\x00-\xd7][\xe0-\xff]|[\xd8-\xdf][\x00-\xff]{2}

JIS
[\x20-\x7e]|[\x21-\x5f]|[\x21-\x7e]{2}

SJIS
[\x20-\x7e]|[\xa1-\xdf]|([\x81-\x9f]|[\xe0-\xef])([\x40-\x7e]|[\x80-\xfc])

SJIS全形空格
(?:\x81\x81)

SJIS全形數字
(?:\x82[\x4f-\x58])

SJIS全形大寫英文
(?:\x82[\x60-\x79])

SJIS全形小寫英文
(?:\x82[\x81-\x9a])

SJIS全形平假名
(?:\x82[\x9f-\xf1])

SJIS全形平假名擴展
(?:\x82[\x9f-\xf1]|\x81[\x4a\x4b\x54\x55])

SJIS全形片假名
(?:\x83[\x40-\x96])

SJIS全形片假名擴展
(?:\x83[\x40-\x96]|\x81[\x45\x5b\x52\x53])

EUC_JP
[\x20-\x7e]|\x81[\xa1-\xdf]|[\xa1-\xfe][\xa1-\xfe]|\x8f[\xa1-\xfe]{2}

EUC_JP標點符號及特殊字符
[\xa1-\xa2][\xa0-\xfe]

EUC_JP全形數字
\xa3[\xb0-\xb9]

EUC_JP全形大寫英文
\xa3[\xc1-\xda]

EUC_JP全形小寫英文
\xa3[\xe1-\xfa]

EUC_JP全形平假名
\xa4[\xa1-\xf3]

EUC_JP全形片假名
\xa3[\xb0-\xb9]|\xa3[\xc1-\xda]|\xa5[\xa1-\xf6][\xa3][\xb0-\xfa]|[\xa1][\xbc-\xbe]|[\xa1][\xdd]

EUC_JP全形漢字
[\xb0-\xcf][\xa0-\xd3]|[\xd0-\xf4][\xa0-\xfe]|[\xB0-\xF3][\xA1-\xFE]|[\xF4][\xA1-\xA6]|[\xA4][\xA1-\xF3]|[\xA5][\xA1-\xF6]|[\xA1][\xBC-\xBE]

EUC_JP全形空格
(?:\xa1\xa1)

EUC半形片假名
(?:\x8e[\xa6-\xdf])

日文半形空格
\x20

Big5
[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|[\xa1-\xfe])

GBK
[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]

GB2312漢字
[\xb0-\xf7][\xa0-\xfe]

GB2312半形標點符號及特殊符號
\xa1[\xa2-\xfe]

GB2312羅馬數組及項目序號
\xa2([\xa1-\xaa]|[\xb1-\xbf]|[\xc0-\xdf]|[\xe0-\xe2]|[\xe5-\xee]|[\xf1-\xfc])

GB2312全形標點及全形字母
\xa3[\xa1-\xfe]

GB2312日文平假名
\xa4[\xa1-\xf3]

GB2312日文片假名
\xa5[\xa1-\xf6]

GB18030
[\x00-\x7f]|[\x81-\xfe][\x40-\xfe]|[\x81-\xfe][\x30-\x39][\x81-\xfe][\x30-\x39]

public class CnCharsetChecker {
    /* Support for Chinese(GB2312) characters */
    // #define isgb2312head(c) (0xa1<=(uchar)(c) && (uchar)(c)<=0xf7)
    // #define isgb2312tail(c) (0xa1<=(uchar)(c) && (uchar)(c)<=0xfe)
    public static boolean isGB2312(byte head, byte tail) {
        int iHead = head & 0xff;
        int iTail = tail & 0xff;
        return ((iHead>=0xa1 && iHead<=0xf7 &&
                 iTail>=0xa1 && iTail<=0xfe) ? true : false);
    }
    /* Support for Chinese(GBK) characters */
    // #define isgbkhead(c) (0x81<=(uchar)(c) && (uchar)(c)<=0xfe)
    // #define isgbktail(c) ((0x40<=(uchar)(c) && (uchar)(c)<=0x7e)
    //                      || (0x80<=(uchar)(c) && (uchar)(c)<=0xfe))
    public static boolean isGBK(byte head, byte tail) {
        int iHead = head & 0xff;
        int iTail = tail & 0xff;
        return ((iHead>=0x81 && iHead<=0xfe &&
                 (iTail>=0x40 && iTail<=0x7e ||
                  iTail>=0x80 && iTail<=0xfe)) ? true : false);
    }
    /* Support for Chinese(BIG5) characters */
    // #define isbig5head(c) (0xa1<=(uchar)(c) && (uchar)(c)<=0xf9)
    // #define isbig5tail(c) ((0x40<=(uchar)(c) && (uchar)(c)<=0x7e)
    //                       || (0xa1<=(uchar)(c) && (uchar)(c)<=0xfe))
    public static boolean isBIG5(byte head, byte tail) {
        int iHead = head & 0xff;
        int iTail = tail & 0xff;
        return ((iHead>=0xa1 && iHead<=0xf9 &&
                 (iTail>=0x40 && iTail<=0x7e ||
                  iTail>=0xa1 && iTail<=0xfe)) ? true : false);
    }
    public static void main(String[] args) {
        String sGB = "爱";
        String sGBK = "愛";
        String sBIG5 = "稲";
        byte[] sChars = null;
        sChars = sGB.getBytes();
        System.out.println(sGB + " is " +
            CnCharsetChecker.isGB2312(sChars[0],sChars[1]) + " for GB2312;" +
            CnCharsetChecker.isGBK(sChars[0],sChars[1]) + " for GBK," +
            CnCharsetChecker.isBIG5(sChars[0],sChars[1]) + " for BIG5");
        sChars = sGBK.getBytes();
        System.out.println(sGBK + " is " +
            CnCharsetChecker.isGB2312(sChars[0],sChars[1]) + " for GB2312;" +
            CnCharsetChecker.isGBK(sChars[0],sChars[1]) + " for GBK," +
            CnCharsetChecker.isBIG5(sChars[0],sChars[1]) + " for BIG5");
        sChars = sBIG5.getBytes();
        System.out.println(sBIG5 + " is " +
            CnCharsetChecker.isGB2312(sChars[0],sChars[1]) + " for GB2312;" +
            CnCharsetChecker.isGBK(sChars[0],sChars[1]) + " for GBK," +
            CnCharsetChecker.isBIG5(sChars[0],sChars[1]) + " for BIG5");
    }
}



Creative Commons License
創用 CC 授權條款
Tags: ,
黑色地窖 » CGI | 評論(0) | 引用(0) | 閱讀(204)