一个wap的网站
计划是每个页面显示300个字符,用substring这个函数来完成截取字符串的功能。可是有的页面最后一个字(中文)被拆分成了两个问号,分别显示在前一个页的末尾,和后一个页的开头。
我做过多次的试验,用substring截取字符串,无论是中文的,英文的,中英文混合的,甚至再混合上标点符号的,都能正常截取。后来我想可能是转义符的问题,又试了一下,发现如果是"\n"就没问题"\r"就不能正常截取,于是把字符串里的"\r"都replace成"\n",可是还是不行,没辙了。
希望各位前辈高人指教。

解决方案 »

  1.   

    遍历你的字符串,或者直接取第300个字符
                
    if(s.charAt(i) >= '\u4E00' && s.charAt(i) <= '\uFA29')
                {
                    System.out.println("是汉字");
                }
      

  2.   

    wap使用的是utf-8编码吧? 一个汉字三个字节
      

  3.   

    "\n" 会自动加上\r ,手工的替换不会加,这样好了,\r后面没有\n的给他加\n ;\n前面没有\r的加\r 就可以了
      

  4.   

    一下是jsp页面的相关部分代码
    <%
    final static int cntCharPerPage=300; //一页的最大内容数String info=null;
    int cnoffset=cntpg*cntCharPerPage;
    int cnPages=0;
    info=cnt.getInfo();
    cnPages=info.length()/cntCharPerPage+(info.length()%cntCharPerPage==0?0:1);info=info.substring(cnoffset,(cnoffset+cntCharPerPage)<info.length()?(cnoffset+cntCharPerPage):info.length());
    if(!cnt.isLowInfo())info=new String((StrConvertor.ConvertToXml(info)).getBytes("ISO-8859-1"),"GBK");%>
    StrConvertor的ConvertToXml函数代码如下:
        public static String ConvertToXml(String string)
        {
            string = string.replaceAll("&", "&amp;");
            string = string.replaceAll(">", "&gt;");
            string = string.replaceAll("<", "&lt;");
            string = string.replaceAll("'", "&apos;");
            string = string.replaceAll("\"", "&quot;");
            string = string.replaceAll("\r\n", "\n");
            string = string.replaceAll("\n", "<br/>\r\n");
            return string;
        }
      

  5.   

    把你转换前和转换后的info在控制台打印一下,看看截取的字串有没有问题