关于Java Servlet 的编码的问题!

来源:百度知道 编辑:UC知道 时间:2024/06/07 23:16:49
我用MYEclipse编一个输入用户名和密码的程序,用Servlet实现得到该用户名和密码,并用浏览器浏览,通过jsvalidation来验证,运行之后输入英文字母可以实现,但是不能输入中文……html文件为login.html;servlet为loginservlet.java……

login.html代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>

<body>
<script language="javascript" src="/webproject/js/validation-framework.js"></script>
<p>请输入用户名和密码:</p>
<form id="form1" name="form1" met

html页面的编码和servlet的编码不一致,解析出来一定不是你想要的结果
你将request.setChraterEncoding("utf8") 改成request.setChraterEncoding("gb2312")试试
如果不行那就这样做:
String username = request.getParameter("username");
username = username.getBytes("gb2312","utf-8");

你在jsp页面用的gb2312,但你在quest里面用的utf-8,你改成response.setContentType("text/html;charset=gb2312")试一下

request.setCharacterEncoding("utf-8");
改成request.setCharacterEncoding("gb2312");

request设置的格式必须和请求的页面(也就是login.html)的编码格式一样 GBK 或 UTF-8

首先
jsvalidation验证前
String username = request.getParameter("username");
username = username.getBytes("gb2312","utf-8");

英文可以,中文应该是乱码了吧