Servlet学习笔记心得(二)

二,在使用html表单传递信息时,出现了中文显示乱码(乱码和??)都出现过,遂进行实验考察,在网上搜寻方法解决。

亲测好评:blog.csdn.net/xiazdong/article/details/7217022/

实验过程如下:

在webroot下新建MyHtml.html
<!DOCTYPE html>
<html>
  <head>
    <title>MyHtml.html</title>
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=GB2312">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
  </head>
  
  <body>
    This is my HTML page. <br>
    <form action="servlet/Test" method="GET">
    名字:<input type="text" name="name">
    <br />
    密码:<input type="text" name="pwd" />
    <input type="submit" value="提交" />
    </form>
  </body>
</html>
<meta http-equiv="content-type" content="text/html; charset=GB2312">

当charset=GB2312时,无论servlet的.java文件内是否添加

response.setCharacterEncoding("UTF-8");

语句,输入的名字和密码中的 中文 都无法传递到地址栏,即html表单的编码有问题,

于是改为charset=UTF-8

结果是中文可以传递到地址栏,即servlet可以进行读取,但是否有对应字符的编码就需要在.java中添加语句:

response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");

测试成功~


回想一下,??的出现是因为根本没有对应编码,乱码是编码的不统一,所以接下来实验一下两边(html和java)编码的对应关系:

当html编码为UTF-8时,无论java中是UTF-8还是GB2312,均无问题;


此时发现index.jsp中无法显示中文,查看编码方式为ISO-8859-1,改成UTF-8后测试成功。

你可能感兴趣的:(servlet,中文,乱码,表单get)