最近,我用tomcat的想法开始我的第一个java web应用程序(Servlet + JSP + MySql),在我完成所有代码部分后,我尝试在应用程序中添加它们之后查询一些数据,当我使用英语,没关系,当我使用中文时,控制台中有乱码,我已经做了一切改变 编码成为" utf-8",但我无法解决,请帮助我!
public String query(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{
Product product = CommonUtils.toBean(request.getParameterMap(), Product.class);
product = encoding(product);
int pageCode = getPageCode(request);
int pageRecord = 10;
PageBean<Product> pageBean = productService.query(product, pageCode, pageRecord);
pageBean.setUrl(getUrl(request));
System.out.println(pageBean.getUrl());
request.setAttribute("pageBean",pageBean);
return "/content.jsp";
}
private Product encoding(Product product) throws UnsupportedEncodingException{
String name = product.getName();
if(name != null && name.trim().isEmpty()){
name = new String(name.getBytes("ISO-8859-1"),"utf-8");
product.setName(name);
}
return product;
}
我查询时的结果是:
/ProductServlet?method=query&barcode=&name=%E5%B8%85&units=&purchasePrice=&salePrice=&inventory=&%E6%90%9C%E7%B4%A2=%E6%8F%90%E4%BA%A4
这个名字是中文,但它变成了凌乱的代码
答案 0 :(得分:1)
首先:name = new String(name.getBytes("ISO-8859-1"),"utf-8");
不应该完成;然后在那一刻之前出现了其他问题。
有以下几点可以设置编码/字符集:
<form accept-encoding="UTF-8"...>
中表示生成的表单字段值不应为url编码,例如%E5%B8%85
。request.setEncoding("UTF-8");
上告知请求是否采用该编码。response.setEncoding("UTF-8");
上。有许多技术可以应用,实际上面的设置可以通过多种方式完成,如应用程序的确定,或者在JSP中作为<%@page pageEncoding="UTF-8" %>
。
如果您使用的是/WEB-INF/web.xml设置,则所有JSP的pageEncoding将为:
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<page-encoding>UTF-8</page-encoding>
</jsp-property-group>
</jsp-config>