Java-mysql-JSP编码问题解决
1、Java编码问题
(1)BufferedReader buf=new BufferedReader(new InputStreamReader(reader,"utf-8"));
(2)byte[] bytes=line.getBytes("编码类型") line=new String(bytes,"编码类型");
2、Mysql编码问题
(1)Navicat在Navicat中鼠标右击数据库名-->连接属性-->高级中,去掉使用mysql字符集前面的勾号,在上面的编码中选择65001(utf-8),
然后再将使用mysql字符集前面的勾号打上。
(2)链接数据库语句+&useUnicode=true&characterEncoding="utf-8"
设置MySQL编码或修改数据库编码
(3)在安装数据库的过程中将默认的拉丁文-->GBK。 (4)在创建数据库时设置选择GBK或者gb2312。 (5)Mysql安装目录下的my.ini文件,将 "default-character-set=xxxxx" 中的xxxxx改成GBK或者gb2312。 (6)Mysql安装目录下的\data\databasename(数据库名)\db.opt文件打开 default-character-set=gbk default-collation=gbk_chinese_ci;
如果上面不是gbk和gbk_chinese_ci则改成支持中文的GBK或者gb2312。 (7)进入Mysql的dos命令下:进入某数据库后 show full columns from tablename ;查看数据类型,如果不是支持中文的类型则执行alter table tablename convert to character set gbk 。 (8)在创建数据库时(用命令创建时)create database databasename CHARACTER SET gbk;
3.JSP编码问题
页面也需要设置转码的:页面:(.jsp)
response.setContentType("text/html;charset=UTF-8");
处理文件:(.java)转码的三种方法:
A 接受参数时进行编码转换String str = new String(request.getParameter("something").getBytes("ISO-8859-1"),"utf-8"); 这样的话,每一个参数都必须这样进行转码。很麻烦。但确实可以拿到汉字。
B 在请求页面上开始处,执行请求的编码代码, request.setCharacterEncoding("UTF-8"),把提交内容的字符集设为UTF-8。这样的话,接受此参数的页面就不必在转码了。直接使用String str = request.getParameter("something");即可得到汉字参数。但每页都需要执行这句话。这个方法也就对post提交的有效果,对于get提交和上传文件时的enctype="multipart/form-data"是无效的。稍后下面单独对这个两个的乱码情况再进行说明。
C 为了避免每页都要写request.setCharacterEncoding("UTF-8"),建议使用过滤器对所有jsp进行编码处理。 新手可以暂时不考虑过滤器的方法,过滤器一般都会涉及到配置开发,要修改web.xml,还算是比较麻烦的,建议接触java一段时间后再考虑使用过滤器的方法。或者如果应用了struts框架,可以查看struts的转码过滤器配置。