/**
* 字符串含中文截位,每个中文汉字按两个字节计算,其他可见字符按一个字节计算
* 在遇到截位时候碰到半个汉字的时候,舍弃半个汉字对应的字节防止插入数据库乱码
* @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截取字符,防止半个汉字
最新推荐文章于 2021-03-20 09:11:01 发布
本文介绍了一种处理含中文的字符串截断方法,确保在截断过程中不会出现半个汉字的情况,避免了插入数据库时出现乱码的问题。该方法通过字节流处理,考虑到了中文汉字的特殊性,即每个汉字占用两个字节。
1万+

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



