一个小例子引出中文乱码的问题:
input.html:
<form action="input.jsp" method="post">
你的姓名:<input type="text" name="name"/>
<input type="submit" value="显示"/>
</form>
input.jsp
<%@page contentType="text/html;charset=GBK"%>
<%
String userName = request.getParameter("name")
%>
<h2>你的姓名:<%=userName%></h2>
显示的是乱码---------
-------------------------------------------------------------------------------------------
乱码产生的原因是什么:
分析所有的静态WEB的执行流程,是先从服务器上取得一个页面,之后通过此页面把内容进行提交,提交给服务器,之后服务其再将提交的内容返回给客户进行显示。那么可以确认乱码是在页面加载时产生的,准确的说是由于页面显示的编码集为GBK,但是页面加载却是用的是ISO8859-1,所以可以引出第一种解决方案来:
<%page contentType="text/html;charse=GBK"%>
<%
String userName = request.getParameter("name");
userName = new String(userName.getBytes("ISO8859-1"));
%>
<h2>你的姓名:<%=userName%></h2>
第二种解决方案:
<%@page contentType="text/html;charset=GBK"%>
<%
request.setCharacterEncoding("GBK");
String userName = request.getParameter("name")
%>
<h2>你的姓名:<%=userName%></h2>