当传入的中文参数的字数是积数时,会丢失最后一个字,如:
传入的中文参数为:朱炽雄
这里直接得到request.getParameter("cus_Name"):æ±ç½é
这里是将 request.getParameter("cus_Name")转换为UTF-8后: 朱炽当传入的中文参数的字数是偶数时,则不会丢失,是正常的,如:
传入的中文参数为:朱炽雄吧
这里直接得到request.getParameter("cus_Name"):æ±ç½éå§
这里是将 request.getParameter("cus_Name")转换后: 朱炽雄吧*注:request.getCharacterEncoding()为ISO8859_1那位大大帮解决下
传入的中文参数为:朱炽雄
这里直接得到request.getParameter("cus_Name"):æ±ç½é
这里是将 request.getParameter("cus_Name")转换为UTF-8后: 朱炽当传入的中文参数的字数是偶数时,则不会丢失,是正常的,如:
传入的中文参数为:朱炽雄吧
这里直接得到request.getParameter("cus_Name"):æ±ç½éå§
这里是将 request.getParameter("cus_Name")转换后: 朱炽雄吧*注:request.getCharacterEncoding()为ISO8859_1那位大大帮解决下
new String(request.getParameter("cus_Name").getByte("ISO-8859_1"),"gb2312");
new String(request.getParameter("cus_Name").getByte("ISO-8859_1"),"GBK");
先把你那些字符转换的东西注释,然后加上这么一个文件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>
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");
}
throws Exception
{
String name = request.getParameter("cus_Name");
name = new String(name.getBytes("ISO8859_1"),"GBK");
System.out.print(name);
return mapping.findForward(null);
}简单化调试看看打印对不对
加上encodeURI(要传的中文变量)