我的一位同事创建了一个基本的联系我们类型的表单,它是重音字符(è、é、à 等)。我们在 Struts 1 上使用 KonaKart 一个 Java 电子商务平台。
我已将问题缩小到通过 HttpServletRequest 对象传入的数据。比较一个类似(正常运行)的表单,我注意到在旧表单上,请求对象的字符编码request.getCharacterEncoding()
(request.getParameter()
已经被破坏了。
除此之外,我没有发现已知良好形式和新旧形式之间有任何显着差异。
我已经排除的事情:
- 两个 HTML 页面都有标签:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- HTML 中的两个表单标签都使用 POST,并且不设置编码
- 从 Firebug 检查,Request 和 Response 标头都具有相同的属性
<%@page contentType="text/html;charset=UTF-8" language="java" %>
两个 JSP 页面在标记中使用相同的属性- *Form.java 文件中没有任何有趣的事情发生,它们都继承自 BaseValidatorForm
- 我检查了源文件编码,它们都设置为默认 - 继承自 Container: UTF-8
如果我将它们从 ISO-8859-1 转换为 UTF-8,效果很好,但我更愿意找出核心问题。例如:new String(request.getParameter("firstName").getBytes("ISO-8859-1"),"UTF8")
欢迎任何建议,我完全没有想法。