![](/img/trans.png)
[英]Eclipse:Using UTF-8 encoding in the text editor make the Strings not work properly, how can I fix that?
[英]Why UTF-8 does not work in html page when using RequestDispatcher? How to fix it?
我有一个页面,并且UTF-8起作用:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>:(</title>
<link rel="stylesheet" href="font-awesome/css/font-awesome.min.css" type="text/css">
<link href='http://fonts.googleapis.com/css?family=Varela+Round' rel='stylesheet' type='text/css'>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.13.1/jquery.validate.min.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
<link rel="stylesheet" href="css/bootstrap.min.css" type="text/css">
<link rel="stylesheet" href="css/login.css" type="text/css">
<link rel="stylesheet" href="css/creative.css" type="text/css">
</head>
<body>
<div class="text-center" style="padding:50px 0">
<div class="logo">Usuário ou email indisponíveis :(.</div>
</div>
</body>
</html>
但是,当我使用RequestDispatcher将用户重定向到此资源时,它完全忽略了页面的UTF-8编码(消息以葡萄牙语显示,显示为“Usuárioou emailindisponÃveis:(。”)。
if (this.hasRecord(connection, (String) requestData.get("reg_username"), (String) requestData.get("reg_email")) == true) {
RequestDispatcher requestDispatcher = request.getRequestDispatcher("/user_taken.html");
requestDispatcher.forward(request, response);
} else {
statement.executeUpdate();
}
在做任何事情之前,我都做过:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
...
}
另外, 这是未解决的。
编辑:我已经更改为response.setCharacterEncoding(“ UTF-8”)而不是请求,问题仍然存在。
更正,您的问题是在重定向上,您可以在此处检查一些解决方案,尤其是其中提到使用SetCharacterEncodingFilter的解决方案。
通过在web-app
部分中修改web.xml
<filter>
<filter-name>CharSet<filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
您还应该添加一个过滤器映射,以指定应将其应用到何处
<filter-mapping>
<filter-name>CharSet</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
经过几天的苦难,我终于解决了问题。
首先,我是Java的Tomcat和Web开发的新手,所以我不知道要用dvhh的答案来修改哪个“ web.xml”文件(我已经检查过了,默认情况下Tomcat具有EXACT过滤器host-manager文件夹内的WEB-INF文件夹)。 然后,他说我必须在自己的Web应用程序内部进行更改,但是没有web.xml(因此我意识到必须创建一个)。 我发现可以在Netbeans中创建它并使用GUI轻松添加过滤器,所以我做到了(此外,我已经从servlet源中删除了response.setCharacterEncoding("UTF-8")
)。
尽管如此,问题仍然存在。 然后我才意识到一个明显的事实:“它在JAVA上运行”,所以我按CTR + 5在Netbeans中打开“服务”,转到“服务器”,右键单击“ Apache Tomcat”,选择“属性”,转到“平台”并添加到VM选项: -Dfile.encoding=UTF-8
另外,不能仅使用filters.SetCharacterEncodingFilter
作为第一类来部署Web应用程序,我不得不将其更改为org.apache.catalina.filters.SetCharacterEncodingFilter
。
结论:
-Dfile.encoding=UTF-8
运行JVM。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.