2

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

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

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

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

谢谢!

4

3 回答 3

2

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

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

于 2012-09-21T01:17:36.560 回答
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>
于 2012-09-21T01:16:17.927 回答
0

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

<form method="post" enctype="application/x-www-form-urlencoded" accept-charset="UTF-8" ... />
于 2012-09-21T12:27:38.423 回答