当前位置: 代码迷 >> 综合 >> 解决中文存储进数据库超过字段最大容量的问题
  详细解决方案

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

热度:92   发布时间:2023-10-28 01:07:44.0

问题描述:

        向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();}			



  相关解决方案