我有一个页面,并用UTF-8:为什么在使用RequestDispatcher时UTF-8在html页面中不起作用?如何解决它?
<!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ário鸥电子邮件indisponÃ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");
...
}
另外,this没有答案。
编辑:我已经更改为response.setCharacterEncoding(“UTF-8”)而不是请求,并且问题仍然存在。
您能检查服务器标题中的编码吗?无论是从'curl -I http:// server/path'命令行还是通过web开发工具/ web检查器。顺便说一句你的代码设置了请求编码而不是响应。 – dvhh
您刚刚设置了请求正文的字符编码,而不是响应正文的字符编码。 – BalusC