我有一个在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字符串?有没有人对此有什么建议?
发布于 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的顶部来实现:
<%@page pageEncoding="UTF-8"%>或者,如果您打算将其应用于webapp的所有web.xml,而不是在所有文件上复制相同的JSP,则将以下内容放入webapp的JSP中
<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编码。
另请参阅:
发布于 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/
https://stackoverflow.com/questions/19006021
复制相似问题