问下大家。我应该怎么判断一个字符串中是否包含有乱码啊。比如:####ʡ######jʢЬҵ###޹#。这种就是乱码。
用什么好的方法可以先判断下啊。或者用正则表达式之类的可以判断。。

解决方案 »

  1.   

    思路:   
      1     首先把得到的字符串转成你需要的编码(比如gb2312或GBK)   
      2     然后判断字符串中是否有"?"   
        
      我以前写的一段判断乱码的jsp中的代码,   仅供参考:   
        
              //     验证昵称是否有特殊字符   
              nick   =   new   String(nick.getBytes("iso8859_1"),   "GBK");   
              char   ws[]   =   new   char[]{'"',   '?',   '   ',   '\'',   '&'};   
              for   (int   i   =   0;   i   <   nick.length();   i++)   
              {   
                  char   c   =   nick.charAt(i);   
                  //System.out.println((int)c);   
                  for   (int   j   =   0;   j   <   ws.length;   j++)   
                  {   
                      char   v   =   ws[j];   
                      //System.out.println("要验证的字符是:   |"   +   v   +   "|   !=   |"   +   c   +   "|");   
                      if   (c   ==   v)   
                      {   
                          out.println("<script>alert('对不起,   您的昵称中包含不能正常显示的字符,   请去掉特殊字符后重试');history.back();</script>");   
                          return;   
                      }   
                  }   
                  if   ((int)c   ==   0xfffd)   
                  {   
                      out.println("<script>alert('对不起,   您的昵称中包含不能正常显示的字符,   请去掉特殊字符后重试');history.back();</script>");   
                      return;   
                  }   
              }
      

  2.   

    上面的思路写错了,   第二点应该是判断字符是否超出编码的范围,   也就是这一句   
      if   ((int)c   ==   0xfffd)   
        
      0xfffd是GBK的编码范围,   如果你需要其他的编码,   就到网上查查他的编码范围