UCS-2同UTF-8对应关系如下:
U-00000000 – U-0000007F:0xxxxxxx
U-00000080 – U-000007FF:110xxxxx 10xxxxxx
U-00000800 – U-0000FFFF:1110xxxx 10xxxxxx 10xxxxxx
U-00010000 – U-001FFFFF:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
U-00200000 – U-03FFFFFF:111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
U-04000000 – U-7FFFFFFF:1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
取得utf-8字节数:
private final long getLength(String s) {
long totalLength = 0;
int i;
char charCode;
for (i = 0; i < s.length(); i++) {
charCode = s.charAt(i);
if (charCode < 0X007F) {
totalLength = totalLength + 1;
} else if ((0X0080 <= charCode) && (charCode <= 0X07FF)) {
totalLength += 2;
} else if ((0X0800 <= charCode) && (charCode <= 0XFFFF)) {
totalLength += 3;
} else if ((0X10000 <= charCode) && (charCode <= 0X1FFFFF)) {
totalLength += 4;
} else if ((0X200000 <= charCode) && (charCode <= 0X3FFFFFF)) {
totalLength += 5;
} else if ((0X4000000 <= charCode) && (charCode <= 0X7FFFFFFF)) {
totalLength += 6;
}
}
return totalLength;
}
该博客介绍了UTF-8编码与UCS-2的关系,并提供了一个Java方法用于计算字符串在UTF-8编码下的字节数。通过遍历字符串中的每个字符,根据字符的Unicode码值确定其在UTF-8中占用的字节数,从而得出总长度。
3285

被折叠的 条评论
为什么被折叠?



