您的位置:首页 > 其它

怎样判断一个字符是否为中文字

2010-02-22 15:50 337 查看
怎样判断一个字符是否为中文字?
http://www.matrix.org.cn/thread.shtml?topicId=95b99c6d-46d1-11db-af0b-0f766c077b58&forumId=19



中文字在unicode里用2字节表示的时候,编码(例如,UTF-16BE)是从4e00-9FBB
如果用char表示,第一个中文字是char c = 19968 (4e00)最后一个中文字,char c = 40891 (9FBB)
如果你是有char数组,直接比较就行了。小于19968大于40891都不是中文 *字*。中文的标点符号,在另外的编码段,具体可以去查www.unicode.org。不过我一般还是使用byte[2]来操作一个中文字,转string也比较方便。
用byte进行转换可以如下面:
byte[] b = new String("一").getBytes("UTF-16BE");
int k = b[0] & 0xFF;
int x = b[1] & 0xFF;
int sum = k * 256 + x;

sum = 19968
byte类型经过一次& 0xFF以后将直接转换成为int类型。







//判断是否中文字
public boolean checkChinese(char word){
if ((word >= 0x4e00)&&(word<=0x9fbb)) return true;
else return false;
}











java.lang.Character.UnicodeBlock.
有个CJK(china中,japan日,k??韩)的常量,有个专门的方法来判断的.J***A的lib和API还是很全的

[System.out.println(Character.UnicodeBlock.of('中'));]











这两天在写一个关于中文的小程序,里面有点代码:
enum CharType{
DELIMITER, //非字母截止字符,例如,.)( 等等 ( 包含U0000-U0080)
NUM, //2字节数字1234
LETTER, //gb2312中的,例如:ABC,2字节字符 同时包含 1字节能表示的 basic latin and latin-1
OTHER,// 其他字符
CHINESE;//中文字
}

private CharType checkType(char c){
CharType ct =null;

//中文,编码区间0x4e00-0x9fbb
if ((c >= 0x4e00)&&(c <= 0x9fbb)){
ct = CharType.CHINESE;
}

//Halfwidth and Fullwidth Forms, 编码区间0xff00-0xffef
else if ( (c >= 0xff00) &&(c <= 0xffef)) {
// 2字节英文字
if ((( c >= 0xff21 )&&( c <= 0xff3a)) ||
(( c >= 0xff41 )&&( c <= 0xff5a))){
ct = CharType.LETTER;
}

//2字节数字
else if (( c >= 0xff10 )&&( c <= 0xff19) ){
ct = CharType.NUM;
}

//其他字符,可以认为是标点符号
else ct = CharType.DELIMITER;
}

//basic latin,编码区间 0000-007f
else if ( (c >= 0x0021) &&(c <= 0x007e)){
//1字节数字
if (( c >= 0x0030 )&&( c <= 0x0039) ){
ct = CharType.NUM;
}
//1字节字符
else if ((( c >= 0x0041 )&&( c <= 0x005a)) ||
(( c >= 0x0061 )&&( c <= 0x007a))) {
ct = CharType.LETTER;
}
//其他字符,可以认为是标点符号
else ct = CharType.DELIMITER;
}

//latin-1,编码区间0080-00ff
else if ( (c >= 0x00a1) &&(c <= 0x00ff)){
if (( c >= 0x00c0 )&&( c <= 0x00ff)){
ct = CharType.LETTER;
}
else ct = CharType.DELIMITER;
}
else ct = CharType.OTHER;

return ct;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: