问题解决:jsp页面的中文乱码

 

1.源码中写的是中文,在显示时是乱码,在代码中设置浏览器的输出显示方式。

 

 <%@ page XXXXXXXX contentType = "text/html;charset=gb2312"%>

  

2.表单中提交的数据,用request.getParameter("")的方法获取,但是当表单中出现中文数据的时候会出现乱码

eg.

FormCharset.jsp

 

<form action="AcceptFormCharset.jsp" method="post">

  用户名:<input type="text" name="userName" size="10"/>

  密   码:<input type="password" name="password" size="10"/>

  <input type="submit" value="提交">

 </form>

  

AcceptFormCharset.jsp

  

<body>
  <font size="4">
  下面是提交表单以后用request取到的表单数据:<br>
  <%
  out.println("表单输入的userName的值是:"+request.getParameter("userName")+"<br>");
  out.println("表单输入的password的值是:"+request.getParameter("password")+"<br>");
  %>
  </font>
</body>

  

这里出现乱码是因为:tomcat对于post方法提交的表单采用的默认编码是ISO-8859-1.

解决办法:转换编码格式:

new String(userName.getBytes("ISO-8859-1"),"gb2312")  

  

从ISO-8859-1格式的字符串中取出字节内容,在用gb2312的编码格式重新构造一个新的字符串

<%
  out.println("表单输入的userName的值是:"+new String(userName.getBytes("ISO-8859-1"),"gb2312") +"<br>");
  out.println("表单输入的password的值是:"+new String(password.getBytes("ISO-8859-1"),"gb2312") +"<br>");
  %>

  

 3.URL中的中文字符传递乱码 

  

<%
  String param = request.getParameter("param");
  %>
  <body><font size="4">
  <a href="URLCharset.jsp?param='中文'">请单击这个链接</a><br>
  你提交的参数为:<%=param %>
  </font>
  </body>

  

  这里的参数传递会出现乱码,用1/2的方法是不行的,需要在tomcat服务器的配置文件进行修改,修改tomcat的conf目录下的server.xml配置文件。修改方法是在port="8080"后面添加URI编码设置URIEncoding="gb2312"

 

另:在jsp文件中出现中文字符,需要设置page参数:

<%@ page language="java" import = "java.util.*" pageEncoding="gb2312"%>

  

posted @ 2018-05-25 16:52  头鹰在学习  阅读(125)  评论(0)    收藏  举报