在Servlet里面
String prjid = new String(prjid.getBytes("iso8859-1"),"UTF-8");
这样转应该说是没有问题的.!
但是.这样却只能转双数的汉字编码!
如果输入的中文个数是奇数.那么编码就转不过来了?请问是什么原因??

解决方案 »

  1.   

    http://blog.csdn.net/txyhl/archive/2007/04/20/1572502.aspx
    楼主看这里
      

  2.   

    用String prjid = new String(prjid.getBytes("iso8859-1"),"GBK"); 试试,或者用过滤器
      

  3.   

    我一般只用String prjid = new String(prjid.getBytes("iso8859-1")); 
      

  4.   

    你的原始字符串是什么编码的呢?这个很重要!iso 是单个字节的
    GBK 是双字节的
    UTF8 是三个字节的剩下的自己考虑吧
      

  5.   

    我的前台是FLEX..FLEX的前台中文默认是UTF-8的.
    这样的集中转换格式我都试验过 String prjid = new String(prjid.getBytes("iso8859-1"),"UTF-8"); 
    貌似就只有这样才能转换过来..其余的都不就可以.
      

  6.   

    过滤器我有考虑过.
    但是.前台是flex 说真的.我真不知道怎么去用过滤器
    我根本无法过滤前台的请求.
      

  7.   

    过滤器代码package com.util;import java.io.IOException;import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;public class EncodeFilter implements Filter { @Override
    public void destroy() {
    // TODO Auto-generated method stub } @Override
    public void doFilter(ServletRequest arg0, ServletResponse arg1,
    FilterChain arg2) throws IOException, ServletException {
    // TODO Auto-generated method stub
    arg0.setCharacterEncoding("UTF-8");
    arg2.doFilter(arg0, arg1); } @Override
    public void init(FilterConfig arg0) throws ServletException {
    // TODO Auto-generated method stub

    }} web.xml中配置
    <filter>
       <filter-name>ef</filter-name>
       <filter-class>com.util.EncodeFilter</filter-class>
      </filter>
      <filter-mapping>
       <filter-name>ef</filter-name>
       <url-pattern>/*</url-pattern>
      </filter-mapping>
      

  8.   


    我有这样弄个过滤器..
    但是好像根本就过滤不了FLEX那边传过来的字符
    我也不知道为什么..非常的郁闷...
      

  9.   


    我肯定知道要首选肯定是选择过滤器..用了过滤器以后就可以一劳永逸.
    但是..我现在是属于用过滤器根本就过滤不了FLEX端传过来的中文.
      

  10.   

    目前问题已经解决...但是我的那种方法不是最好的方法.
    就如同 bdceo 说的一样..如果多了起来..非常麻烦...
    所以..请求高手
    到底怎么样配置过滤器来过滤FLEX中的中文字符
      

  11.   

    没有更好的答案了么????
    我真的很想用过滤器来过滤掉中文字符的..!
    可是现在   dengkai_java  提供的这种方式不行....等待高手...
    小弟在此谢过了...
      

  12.   

    首先第一,建议楼主不要用这样的转码方式,到现在,我也很讨厌,当然是不会用这样的转码了,因为它会给你意想不到的惊喜,环境变化,就会让你本来是中文,你转成什么?难道英文?所以,少用转码,
    其次,可以有很多的方式来解决乱码问题,所以最好不要用这样的方式,比如编写过滤器,,
    或者是用我引用这个方式.你用这个就十分的好用了,而且应该不会出现问题,当然,你直接传递参数,放到Session当中,用request来获取也比你转码好啊.比如:java.net.URLEncoder.encode(filename, "utf-8")这样吧,
      

  13.   

    utf-8的话应该不会出现乱码的吧,
    统一编码就可以避免乱码问题。
      

  14.   

    用String prjid = new String(prjid.getBytes("iso8859-1"),"GBK"); 试试,或者用过滤器 
      

  15.   

    这个样子 String prjid = new String(prjid.getBytes("iso-8859-1"));  就OK!了