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

问题描述:

        向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("
"); int j = error.lastIndexOf("
"); error = error.substring(i + 4, j); error = error.replaceAll("
", ","); try { if(error.getBytes("utf-8").length>999){ error=substr(error, 900); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); }



你可能感兴趣的:(平时遇到的问题)