对各字符集编码范围的总结

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");
    }
}

 

 

 

posted @ 2010-07-01 11:47  风叙  阅读(1160)  评论(0)    收藏  举报