首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ajax到Servlet,URI编码的查询字符串

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

Stack Overflow用户
提问于 2013-09-25 21:16:31
回答 2查看 917关注 0票数 0

我有一个在Apache Tomcat上运行Servlet2.4的java web项目。

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

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

当向web服务器发出ajax请求( get和post)时,Servlet无法检索特殊的utf-8字符。

也许是因为它需要UTF-8并获得URLencoded字符串?有没有人对此有什么建议?

EN

回答 2

Stack Overflow用户

发布于 2013-09-25 21:33:39

在head标签中使用<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">

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

您现在应该知道为什么该属性的名称完全是这样的:http-equiv,就像"HTTP等价物“一样。

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

代码语言:javascript
复制
<%@page pageEncoding="UTF-8"%>

或者,如果您打算将其应用于webapp的所有web.xml,而不是在所有文件上复制相同的JSP,则将以下内容放入webapp的JSP中

代码语言:javascript
复制
<jsp-config>
    <jsp-property-group>
        <url-pattern>*.jsp</url-pattern>
        <page-encoding>UTF-8</page-encoding>
    </jsp-property-group>
</jsp-config>

请注意,我假设您发送jQuery ajax请求的方式是正确的,并且使用$.serialize()encodeURIComponent()对参数进行了正确的URI编码。

另请参阅:

  • Unicode - How to get the characters right?
票数 2
EN

Stack Overflow用户

发布于 2013-09-25 21:20:25

在执行jQuery.ajax时使用此contentType

contentType (default: 'application/x-www-form-urlencoded; charset=UTF-8')

更多详细信息请访问:http://api.jquery.com/jQuery.ajax/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19006021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档