/**
* 字符串含中文截位,每个中文汉字按两个字节计算,其他可见字符按一个字节计算
* 在遇到截位时候碰到半个汉字的时候,舍弃半个汉字对应的字节防止插入数据库乱码
* @param str 源字符串
* @param maxByteLen 截位后的字符串最大长度
* @return
*/
public static String subString(String str, final int maxByteLen) {
int len=maxByteLen;
if (str == null || maxByteLen <= 0) {
return "";
}
byte[] bStr;
try {
bStr = str.getBytes("GBK"); //字节流
if (maxByteLen >= bStr.length) {
return str;
}
String cStr = new String(bStr, maxByteLen - 1, 2,"GBK");
if (cStr.length() == 1 && str.contains(cStr)) {
len--;
}
return new String(bStr, 0, len,"GBK"); //重新组字符串
} catch (UnsupportedEncodingException e) {
throw new java.lang.RuntimeException("substring fail ");
}
}
JAVA截取字符,防止半个汉字
最新推荐文章于 2024-08-06 10:22:43 发布