使用length()取string長度,會遇到中文字長度只有回傳1,所以如果是要算真正的長度,則需要將字串轉為byte陣列,但在做substring時,可能會截到中文字,故可先作byte是否為中文的判斷後,再做位置調整。主要是利用isChineseCharacter類別中所寫中文內碼範圍判斷,範例如下:
public class getByteTest {
/**
* 測試中文拆解,isChineseCharacter可判斷是否為中文字
* @param args
* @throws Throwable
*/
public static void main(String[] args) throws Throwable{
// TODO Auto-generated method stub
String aaa="ABC小妹妹test123";
byte[] dataByte = null;
try {
dataByte = aaa.getBytes("Big5");
} catch (Throwable e) {
System.out.println("傳入字串轉成Big5編碼的byte array 失敗 ");
}
String
tmp = new String(dataByte, 0, dataByte.length, "Big5");
boolean isChinese;
for(int i=0;
i<tmp.length();i++){
isChinese=isChineseCharacter(tmp.charAt(i));
System.out.println(tmp.charAt(i)+" : "+isChinese);
}
}
public static boolean isChineseCharacter (char c){
return (19968<=(int)c)&&((int)c<=171941);
}
}
沒有留言:
張貼留言