所有页面都存成UTF-8编码的,HTML,Servlet
1、带有提交Form的HTML页面,加上
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
保证浏览器用UTF-8打开页面。
2、Form用Post方法提交
3、Servlet的doPost()中设置Request和Response的编码:
req.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=utf-8");
如果Form用Get方法提交,也正确得到Request中的值,需要先变成“ISO8859-1”的字节数组,再生成UTF-8的字符串。
String newValue = new String(req.getParameter("name").getBytes("ISO8859-1"), "UTF-8");
resp.setContentType("text/html;charset=utf-8");
4、还可以设置%tomcat%/conf/server.xml :
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
5、可以通过文件过滤完成字符集自动转换
web.xml文件中的配置信息:
6、数据库连接出现乱码
只要涉及中文的地方全部是乱码,解决办法:在数据库的数据库URL中加上
useUnicode=true&characterEncoding=GBK 就OK了。
7、数据库的显示乱码
在mysql4.1.0中,varchar类型,text类型就会出现中文乱码,对于varchar类型把它设为binary属性就
可以解决中文问题,对于text类型就要用一个编码转换类来处理,实现如下:
把它编译成class,就可以调用Convert类的静态方法ISOtoGB()来转换编码。