在Jsp页面如果需要控制字符长度,而且属性已经用了UTF-8,导致一个汉字和一个字母都识别为一个字符,但是在页面显示的时候一个字母仍然占一个字节长度,一个汉字占两个字节长度,所以导致一面文字部分只要有字母就会出现长短不一的现象,不知用什么方法可以解决这种长短不一的办法。谢谢各位了!

解决方案 »

  1.   


    管你是utf-8还是什么,只要是汉字都是2个长度。你的字节和字符长度是2个概念,比如:a和啊,你觉得他们2个哪个长点嘛。
      

  2.   

                    /**
     * 
     * 第一个参数,传入的是要截的中英文字符串。<br />
     * 第二个参数,要截取的长度。<br />
     * @param str
     * @param subBytes
     * @return str
     */
    public String subString(String str, int subBytes) {
    int bytes = 0; // 用来存储字符串的总字节数
    for (int i = 0; i < str.length(); i++) {
    if (bytes == subBytes) {
    return str.substring(0, i);}
    char c = str.charAt(i);
    if (c < 256) {
    bytes += 1; // 英文字符的字节数看作1
    }else {
    bytes += 2; // 中文字符的字节数看作2
    if(bytes - subBytes == 1){
    return str.substring(0, i);
    }
    }
    }
    return str;
    }
    后台处理,当字符串超出你想要的长度时调用上面方法把它截取后再传递给JSP。