Jay*_*Jay 8 java servlets character-encoding struts-1 konakart
我的一个同事创建了一个基本的联系我们类型形式,它修饰了重音字符(è,é,à等).我们在Struts 1上使用KonaKart作为Java电子商务平台.
我已经将问题缩小到通过HttpServletRequest对象传入的数据.比较一个类似(正常运行)的表单,我注意到在旧表单上,请求对象的Character Encoding(request.getCharacterEncoding())返回为"UTF-8",但在新表单上它返回为NULL,并且文本从request.getParameter()已经被破坏了.
除此之外,我还没有发现已知良好形式与新破形式之间存在任何显着差异.
我已经排除的事情:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><%@page contentType="text/html;charset=UTF-8" language="java" %>标记中使用相同的属性如果我将它们从ISO-8859-1转换为UTF-8,它的效果很好,但我更愿意找出核心问题.例如:new String(request.getParameter("firstName").getBytes("ISO-8859-1"),"UTF8")
欢迎提出任何建议,我完全没有想法.
Bal*_*usC 15
现代浏览器通常不在HTTP请求Content-Type标头中提供字符编码.这是基于HTML表单的应用程序的情况,但是Content-Type与为表单提供页面的初始HTTP响应的标题中指定的字符编码相同.您需要自己将请求字符编码显式设置为相同的编码,这在您的情况下是UTF-8.
request.setCharacterEncoding("UTF-8");
在从请求中检索任何请求参数之前执行此操作(否则为时已晚;然后将使用服务器平台默认编码来解析参数,这通常是ISO-8859-1).一个Servlet过滤器,其上映射/*是这一个完美的地方.
| 归档时间: | 
 | 
| 查看次数: | 9682 次 | 
| 最近记录: |