一、簡介
為了統一世界各國的字元集,流行開了Unicode字元集,java也支援Unicode編碼,即java中char存的是代碼點值,即無論是‘A’還是‘中’都占兩個位元組。
代碼點值:與Unicode編碼表中字元相對應的代碼值;
代碼單元:就是java中的一個char,可一個以認為是字元編碼的基本單元
二、根據位元組截取字元串的代碼實作
public String getSubString(String str, int length) throws Exception {
int i;
int n;
byte[] bytes = str.getBytes("Unicode"); //使用Unicode字元集将字元串編碼成byte序列
i = 2; //bytes的前兩個位元組是标志位,bytes[0] = -2, bytes[1] = -1, 故從第二位開始
n = 0;
for(; i < bytes.length && n < length; i++) {
if(i % 2 == 1) {
n++;
} else {
if(bytes[i] != 0) {
n++;
}
}
}
//去掉半個漢字
if(i % 2 == 1) {
if(bytes[i-1] != 0) {
i = i -1;
} else {
i = i + 1;
}
}
return new String(bytes, 0, i, "Unicode");
}