Oak*_*ork 16 java jsp tomcat jstl tomcat6
正在进行奇怪的字符编码.我正在使用JSP(JSTL)和Struts与Tomat 6.
我有我的JSP页面编码:
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
Run Code Online (Sandbox Code Playgroud)
问题是当我尝试使用encodeURI传递url时:
<script type="text/javascript">
$('#mailer_filter').change(function(){
var val = $(this).val();
console.log(val);
console.log(escape(val));
console.log(encodeURI(val));
location.href = 'mailList.a?' + encodeURI($(this).val());
});
</script>
Run Code Online (Sandbox Code Playgroud)
action(java end)上的参数如下:
Gaz Métro
Run Code Online (Sandbox Code Playgroud)
但是在前端它显示为:
Gaz Métro
Run Code Online (Sandbox Code Playgroud)
这是正确的方法.我能做些什么?
Rah*_*wal 18
做以下
1)HTML代码
<meta contentType="text/html; charset="UTF-8"/>
Run Code Online (Sandbox Code Playgroud)
2)IE视图的浏览器设置 - 编码 - Unicode(UTF-8)
3)Tomcat Server server.xml - 在Connector标签中添加"URIEncoding"属性为
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
Run Code Online (Sandbox Code Playgroud)
catalina.sh/catalina.bat - 添加以下内容
set JAVA_OPTS=--Xms256m -Xmx1024m -Xss268k -server -XX:MaxPermSize=256m -XX:-UseGCOverheadLimit -Djava.awt.headless=true -Djavax.servlet.request.encoding=UTF-8 -Dfile.encoding=UTF-8
set CATALINA_OPTS=-Dfile.encoding="UTF-8"
Run Code Online (Sandbox Code Playgroud)
4)MIME类型的响应应该是"application/x-www-form-urlencoded"
Pau*_*ime 11
你有没有遵循这些步骤?
http://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q8
复制如下:
使用UTF-8作为一切的字符编码是一个安全的选择.这应该适用于几乎所有情况.
要完全切换到使用UTF-8,您需要进行以下更改:
在server.xml中设置URIEncoding ="UTF-8".参考:HTTP连接器,AJP连接器.
使用字符编码筛选器,默认编码设置为UTF-8
更改所有JSP以在其contentType中包含charset名称.
例如,<%@page contentType="text/html; charset=UTF-8" %>用于通常的JSP页面和<jsp:directive.page contentType="text/html; charset=UTF-8" />XML语法中的页面(也称为JSP文档).
更改所有servlet以设置响应的内容类型,并在内容类型中包含charset name为UTF-8.
使用response.setContentType("text/html; charset=UTF-8")或response.setCharacterEncoding("UTF-8").
更改您使用的任何内容生成库(Velocity,Freemarker等)以使用UTF-8并在其生成的响应的内容类型中指定UTF-8.
在字符编码过滤器或jsp页面有机会将编码设置为UTF-8之前,禁用可能读取请求参数的任何阀门或过滤器.有关更多信息,请访问http://www.mail-archive.com/users@tomcat.apache.org/msg21117.html.
尝试将 Tomcat 连接器的 URIEncoding 参数(在 server.xml 中)设置为 UTF-8:
例如:
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"
URIEncoding="UTF-8"/>
Run Code Online (Sandbox Code Playgroud)