如何解决将请求参数作为UTF-8编码的字符串传递
在pageEncoding
只设置响应的字符编码和charset
所述HTTP的属性Content-
Type
标题中。基本上,它告诉服务器将JSP生成的字符解码为UTF-8,然后再发送给客户端,而标头则告诉客户端使用UTF-8对其进行编码,并且当同一页面中的任何形式为提交回服务器。在contentType
已经默认为text/html
,所以下面就足够了:
<%@page pageEncoding="UTF-8"%>
通过HTTP提供页面时,将忽略HTML元标记。仅当客户端将页面另存为HTML文件并在本地磁盘系统上 然后 由file://
浏览器中的URI
打开页面时,才使用它。
在您的特定情况下,HTTP请求正文编码显然未设置为UTF-8。在请求中涉及的任何servlet或过滤ServletRequest#setCharacterEncoding()
器中进行 首次调用 之前 ,都需要在servlet或过滤器中设置请求主体编码request.getXxx()
。
request.setCharacterEncoding("UTF-8");
String login = request.getParameter("login");
String password = request.getParameter("password");
// ...
解决方法
我正在创建一个简单的登录页面,我想将登录名和密码参数作为UTF-8编码的字符串传递。正如您在下面的代码中看到的那样,第一行是我将编码设置为UTF-8的位置,但这似乎毫无意义,因为它不起作用。当我在重音符号中使用登录名和密码参数时,结果页面会收到奇怪的字符。
如何以一种适用于所有浏览器的方式正确设置字符编码?
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>My Page</title>
</head>
<body>
<h1>Welcome to My Page</h1>
<form name="login" action="login.jsp" method="POST">
Login:<br/>
<input type="text" name="login" value="" /><br/>
Password:<br/>
<input type="password" name="password" value="" /><br/>
<br/>
<input type="submit" value="Login" /><br/>
</form>
</body>
</html>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。