最近看到很多论坛上说,无非就是以下的三点:
一,在静态网页中,添加 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />。但问题是这仅仅修改了当html文件被编译后传递给浏览器的内容编码,仍然没有修改其页编码,很多情况下,这不能解决问题;
二,在jsp文件中添加<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>.事实证明,当jsp include html时,jsp的汉字并不会乱码,显然这也是行不通的。
三,修改tomcat xml文件。事实证明tomcat7.0不支持这个方法。
笔者有以下有几个个人认为能从根本上解决问题的方法,希望读者借鉴。
一,从根本上解决页编码问题。将已经写好的html文件或jsp文件用txt打开。点击另存为,选择编码格式为UTF-8,确定。这时,你的问题可能已经解决了。(虽然对于大项目而言,这种方法实在不可取,但是对于初学者而言,能起到帮助作用)。
二,在获取客户提交信息,也就是说form的method是post时,在很多情况下会出现request得到的汉字内容会乱码,这时,我们首先将获取到的字符串用UTF-8编码,然后存放到一个字节数组中,再将这个数组转化为字符串。例如:
String username=request.getParameter("username");
byte busername[]=username.getBytes("UTF-8");
username=new String(busername);
三,每次调用一次下面的方法即可。
<%!
public String toChinese(String str) throws java.io.UnsupportedEncodingException
{
byte b[]=str.getBytes("UTF-8");
str=new String(b);
return str;
}
%>
(具体内容请参加张银鹤等编著的《jsp动态网站开发》)