使用Java和Struts 1.1处理特殊字符

时间:2011-01-05 23:36:03

标签: java forms character-encoding struts

问题:

提交表单并在其上显示文本框。我使用alt + 0174输入一个包含(注册商标)字符的字符串。 (R)符号在浏览器中正确显示。

我点击提交,在BaseTilesRequestProcessor上有一个断点(我知道最早可能检查请求的地方)

如果我深入了解请求并找到与文本框对应的值,它的字符串中包含(R)符号,但在(R)之前它有一个奇怪的字符:Â

在我提交这个问题之前,我在这里找到了答案:http://ianpurton.com/struts-utf-8-and-form-submissions我使用了这种技术,它运作正常。所以我的问题是,为什么这有效?我在应用此过滤器之前检查了request.getCharacterEncoding()并且它为null。什么设置这个属性?浏览器正在提交?

谢谢!

1 个答案:

答案 0 :(得分:1)

是的,浏览器可以在提交期间设置此属性,但正如您找到的链接指出的那样,大多数浏览器默认情况下不设置此属性。因此,您可以获得Struts 1中的默认值,这显然不是UTF-8。检查getCharacterEncoding()时得到NULL的事实证实浏览器没有发送任何此类标题。