一、簡介
為了統一世界各國的字符集,流行開了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");
}
