iso8859-1:单字节编码,最多能表示的字符范围是0-255,应用于英文系列。
GB2312/GBK:这就是汉子的国标码,专门用来表示汉字,是双字节编码,而英文字母和iso8859-1一致(兼容iso8859-1编码)。其中gbk编码能够用来同时表示繁体字和简体字,而gb2312只能表示简体字,gbk是兼容gb2312编码的。
UTF:utf编码兼容iso8859-1编码,同时也可以用来表示所有语言的字符,不过,utf编码是不定长编码,每一个字符的长度从1-6 个字节不等。另外,utf编码自带简单的校验功能。一般来讲,英文字母都是用一个字节表示。
unicode:这是最统一的编码,可以用来表示所有语言的字符,而且是定长双字节(也有四字节的)编码,包括英文字母在内。所以可以说它是不兼容iso8859-1编码的,也不兼容任何编码
截取字符
public class TestSplitString {
public static String splitLength(String s, int length) {
int bytes = 0;
StringBuffer buf = new StringBuffer();
for (int i = 0; i < s.length() && bytes < length; i++) {
char c = s.charAt(i);
if (c > 255) {
if (bytes + 2 > length)
break;
bytes += 2;
} else
bytes++;
buf.append(c);
}
return buf.toString();
}
public static void main(String[] args) {
String s = "什么人群觉得这个景区最适合什么";
String s2 = "aaaaaaaaaaaaaaaaaaaaaaaaaaa";
System.out.println(s2.substring(0,10));
System.out.println(s.substring(0,10));
System.out.println(limitLength(s2, 10));
System.out.println(limitLength(s, 10));
}
}