JAva(16)--中国語と英語を混合し、一定の長さを切り取り、文字化けしないようにする
中国語は2バイトなので、メールの文字数など、一定の文字長を切り取る必要がある場合は、文字化けしないことを保証する必要があります.
import java.io.UnsupportedEncodingException;
public class Demo {
/** * gb2312 gbk * gb2312 ascii ascii ( ) ( ) * gbk , : * @throws UnsupportedEncodingException */
public static void main(String[] args) throws UnsupportedEncodingException {
String str = "abc ";
byte[] buf = str.getBytes("gbk"); // ctrl+2,L
// ,
//decode(buf,8);
decodeByGBK(buf, 6);
}
private static void decodeByGBK(byte[] buf, int len) {
// gbk
boolean b = false; // b true
for(int i=0; i<len; i++) {
if(b)
b = false;
else if(buf[i]<0)
b = true;
}
if(b)
len--;
String str = new String(buf, 0, len);
System.out.println(str);
}
private static void decode(byte[] buf, int len) {
//
int count = 0;
for(int i=0; i<len; i++) {
if(buf[i]<0)
count++;
}
if(count%2==1)
len--;
String str = new String(buf, 0, len);
System.out.println(str);
}
}