在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");
// ...