Spring表单解码撇号错误

时间:2012-09-17 21:15:46

标签: forms spring spring-mvc encoding character-encoding

我有一个用户通常会复制并粘贴到的表单。当副本中有撇号并且过去时,它们都会变成问号。例如,有人刚刚复制并粘贴了本文的标题:

http://brooklynheightsblog.com/archives/47796

当用户以常规形式复制和粘贴帖子时,会出现此问题。但是,我也有通过JSON提交的ajax,当这样做时,撇号可以从相同的精确复制和粘贴完成。此方法使用Jackson json消息转换器。

此外,我检查了编码的表单数据,看起来很好:

Atlantic+Avenue%E2%80%99s+Sahadi%E2%80%99s+Preps+For+Wall-To-Wall+%28To+Wall%29+Expansion

我尝试使用在线解码器,文字解码得很好。

任何人都知道表单提交会导致这种情况发生了什么?

谢谢!

3 个答案:

答案 0 :(得分:2)

这是因为复制的撇号不是标准的ascii。这是一个特殊的符号,像文字一样使用程序来使撇号看起来更好。您需要将这些符号转换为普通符号。可以在浏览器或服务器上执行此操作。

这可能是您的解决方案:Converting MS word quotes and apostrophes

答案 1 :(得分:1)

您需要在web.xml中包含过滤器

<filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>

答案 2 :(得分:0)

您是否尝试过使用这些属性?

<form method="post" enctype="application/x-www-form-urlencoded" accept-charset="UTF-8" ... />