【发布时间】:2015-11-22 14:13:22
【问题描述】:
我有一个页面,并且 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ário ou email 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的命令行,还是通过网络开发工具/网络检查器。顺便说一句,您的代码设置的是请求编码而不是响应编码。 -
您只是设置了请求正文的字符编码,而不是响应正文。
标签: java html servlets encoding utf-8