您的位置:首页 > 数据库

解决中文存储进数据库超过字段最大容量的问题

2017-05-12 17:42 483 查看
问题描述:
        向DB2数据库中一varchar类型字段中插入一条String类型数据,程序使用String.length()来进行数据的长度校验,如果数据是纯英文,没有问题,但是如果数据中包含中文,校验可以通过,但是在数据入库时经常会报数据超长。

 

问题分析:

        既然问题是数据超长,那么问题应该就是出在数据长度校验上,也就是出在String.length()这个方法上。

解决方式:

        既然是判断数据长度时以字符为标准导致出错,那么思路就很明确了,在进行数据长度校验时,取数据的字节长度
/**
* 判断传进来的字符串,是否
* 大于指定的字节,如果大于递归调用
* 直到小于指定字节数
* @param s
*            原始字符串
* @param num
*            传进来指定字节数
* @return String 截取后的字符串
*/
public static String substr(String s,int num){
int changdu = s.getBytes().length;
if(changdu > num){
s = s.substring(0, s.length() - 1);
s = substr(s,num);
}
return s;
}
最后字符串处理如下

String error = tTbWorkFlowUI.mErrors.getFirstError();
int i = error.indexOf("<br>");
int j = error.lastIndexOf("<br>");
error = error.substring(i + 4, j);
error = error.replaceAll("<br>", ",");
try {
if(error.getBytes("utf-8").length>999){
error=substr(error, 900);
}
} catch (UnsupportedEncodingException e) {

e.printStackTrace();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐