java - Ajax 到 Servlet,URI 编码的查询字符串

标签 java ajax servlets utf-8

我有一个在 Apache Tomcat 上运行 Servlet 2.4 的 java web 项目。

在我的 servlet 中,我设置了 request.setCharacterEncoding("utf-8")并使用 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">在 HTML head 标签中。

项目中的所有文件(Java、JS 等)都将文本文件编码设置为 utf-8 。我还添加了一个映射到 web.xml 中所有 Servlet 的过滤器它将字符编码设置为 utf-8

当向我使用 jQuery 的 Web 服务器发出 ajax 请求(get 和 post)以及 html 表单上的序列化方法时,Servlet 无法检索特殊的 utf-8人物。

也许是因为它期望 UTF-8并获取 URL 编码的字符串?有人对此有任何建议吗?

最佳答案

using the <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> in HTML head tag.

http-equiv当 HTML 页面本身由真正的 HTTP 请求提供服务时,HTML header 中的标记将被忽略。相反,使用 HTTP 响应 header 中提供的信息。元http-equiv仅当页面未通过 http:// 作为 HTTP 资源获取时才使用标签URI,例如通过 file:// 访问本地磁盘文件系统URI,当最终用户将获取的 HTML 文件保存到磁盘文件系统并通过文件资源管理器从那里重新打开它时,可能会发生这种情况。

您现在应该可能意识到为什么该属性的调用方式完全相同:http-equiv ,如“HTTP 等效项”中所示。

因此,您需要在真实的HTTP响应头中设置内容类型和字符编码。这可以通过将以下行放在 JSP 顶部来完成:

<%@page pageEncoding="UTF-8"%>

或者,如果您打算将其应用到 Web 应用程序的所有 JSP 上的一个位置,而不是在所有文件上复制粘贴相同内容,则将以下内容放入 Web 应用程序的 web.xml 中:

<jsp-config>
    <jsp-property-group>
        <url-pattern>*.jsp</url-pattern>
        <page-encoding>UTF-8</page-encoding>
    </jsp-property-group>
</jsp-config>

请注意,我假设您以正确的方式发送 jQuery ajax 请求,并且您使用例如正确的 URI 编码参数$.serialize()encodeURIComponent() .

另请参阅:

关于java - Ajax 到 Servlet,URI 编码的查询字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19006021/

相关文章:

java - 我想将数据库中的多个图像显示到 jsp(我正在映射 servlet),所以在 jsp 中,我将显示在 img 标签的 src 中

java - 写入新的文本文件

java - Android 异步任务 ArrayList 操作导致 onDraw 中 IndexOutOfBounds

java - 为什么java数组文档不显示字段 "length"?

java - 关于何时使用 spring/hibernate 为批处理作业启动新 session 或事务的最佳实践是什么?

javascript - 使用javascript获取一些http url的来源

jquery - 将 JSON 从 python 脚本发送到 JQuery

javascript - 没有 javascript 时 AJAX 得到备份

java - 是否需要在用户中为tomcat设置CATALINA_HOME变量

java - AppEngine 将我的 POST 请求处理为 GET