当传入的中文参数的字数是积数时,会丢失最后一个字,如:
传入的中文参数为:朱炽雄
这里直接得到request.getParameter("cus_Name"):朱炽é›
这里是将 request.getParameter("cus_Name")转换为UTF-8后: 朱炽当传入的中文参数的字数是偶数时,则不会丢失,是正常的,如:
传入的中文参数为:朱炽雄吧
这里直接得到request.getParameter("cus_Name"):朱炽雄吧
这里是将 request.getParameter("cus_Name")转换后: 朱炽雄吧*注:request.getCharacterEncoding()为ISO8859_1那位大大帮解决下

解决方案 »

  1.   

    试试下面3种转化new String(request.getParameter("cus_Name").getByte("ISO-8859_1"),"utf-8");
    new String(request.getParameter("cus_Name").getByte("ISO-8859_1"),"gb2312");
    new String(request.getParameter("cus_Name").getByte("ISO-8859_1"),"GBK");
      

  2.   

    GBK,GB2312,UTF-8都试过了,还是一样
      

  3.   

    写过滤器吧 
    先把你那些字符转换的东西注释,然后加上这么一个文件servlet你测试一下如果可以,再用。因为我用的是struts没有问题/*
     * no comments
     */
    package com.water.util;
    import java.util.Iterator;
    import java.util.Map;import javax.servlet.http.*;
    import org.apache.struts.action.ActionServlet;public class SetCharacterEncodingFilter extends ActionServlet {
    protected void process(HttpServletRequest request,
    HttpServletResponse response) throws java.io.IOException,
    javax.servlet.ServletException {
    request.setCharacterEncoding("UTF-8");// 字符集内码转换

    if(request.getMethod().equalsIgnoreCase("get")) {
    Map paramMap = request.getParameterMap();
    Iterator iterator = paramMap.values().iterator();
    while(iterator.hasNext()) {
    String[] param = (String[])iterator.next();
    param[0] = new String(param[0].getBytes("ISO-8859-1"),"UTF-8");
    }
    }
    super.process(request, response);// ActionServlet 的处理
    }
    }
    //--------------------web.xml----------------------配置------------ <servlet-name>action</servlet-name>
    <servlet-class>
    com.water.util.SetCharacterEncodingFilter
    </servlet-class>
     <servlet-mapping>
        <servlet-name>Code</servlet-name>
        <url-pattern>/servlet/Code</url-pattern>
      </servlet-mapping>
      

  4.   

    <td width="37%"><a href="#" onClick="openVIP('./chdrVIP.do?cusID=<%=detailData.getCusID()%>&cus_Name=<%=detailData.getOwnName().trim()%>','','width=650,height=410,scrollbars')" target='_self'><%=detailData.getOwnName()%></a></td>***************************************************************
    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
            throws Exception
        {
         response.setContentType("text/html;charset=utf-8");
            PropertyConfigurator.configure(Handle.getLog4jPath(request));
            LoginForm loginForm = (LoginForm)request.getSession().getAttribute("loginForm");
            if(loginForm == null){
                return mapping.findForward("noInfo");
            }
            if(request.getParameter("cusID")==null){
             return mapping.findForward("noInfo");
            }
            String cusID = request.getParameter("cusID");
            if(cusID==null || cusID.trim().equals("") || cusID.trim().equals("ppp")){
             return mapping.findForward("noInfo");
            }
    //        System.out.println("客户号:"+cusID);
            CHDRVIPPage page = new CHDRVIPPage();
            ConditionData condition = new ConditionData();
            condition.setChdrNum(cusID);
            //解决请求参数中,中文乱码
            String cusName=new String(request.getParameter("cus_Name").getBytes(request.getCharacterEncoding()),"UTF-8");
            cusName=cusName.substring(0, cusName.length()-1);
            condition.setAccount(cusName);
            System.out.println(request.getCharacterEncoding());
            System.out.println(Handle.ISOtoGB(request.getParameter("cus_Name")));
            System.out.println("这里直接得到request.getParameter(\"cus_Name\"):"+request.getParameter("cus_Name"));
            System.out.println("这里是将 request.getParameter(\"cus_Name\")转换后: "+cusName);        
            
            PageData pageData = new PageData();
            page.setCondition(condition);
            page.setPageData(pageData);
            page.refreshData();
            
            request.setAttribute("vectorData", page.getData());
                
            
            return mapping.findForward("success");
        }
      

  5.   

    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
            throws Exception
        {
           String name = request.getParameter("cus_Name"); 
           
           name = new String(name.getBytes("ISO8859_1"),"GBK");
           
           System.out.print(name);
           
            return mapping.findForward(null);
        }简单化调试看看打印对不对
      

  6.   

    页面传中文参数的时候转换一下
    加上encodeURI(要传的中文变量)
      

  7.   

    你吧编码设成GBK就不会有问题!