天天看點

java 位元組截取_Java中根據位元組截取字元串

一、簡介

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

}