最近偶与乱码有缘

暑假做的事情也多半都用Dreamweaver解决,自从七月底彻底重装了一个新的系统后,发现偶那个绿色版本的中文Dreamweaver没有以前好用了,而且我习惯用UTF-8编码的(这个貌似用英文版的操作系统最好了^_^),即使在首选参数里改了新建网页的默认编码为UTF-8,仍然经常出现乱码,而且越来越多。于是一激动就把绿色版给删了(注册表等相关项没改),然后去找了个英文版的Dreamweaver 8装上,结果让我哭笑不得,因为菜单和面版都变得半土不洋的,有些是英文,有些是中文……乱码依然会偶尔出现一下……

说正题,班上的一个MM实习,用JSP给学院某个老师的实验室做一个网站,新手上路。人在外地,由于要给老师测试,要偶的电脑做一下临时JSP服务器,Tomcat+MySQL。网站还只做了几个简单的页面,但是偶测试的时候却颇为不顺,搜索老是搜不到结果,数据库里是肯定有这个数据的!而她却说在她那边代码测试正常,能搜到结果……明天要检查,今天晚上她又不能做,只好让我来解决这个问题了。

偶也是个新手,但还是能看懂这些简单的代码的,毕竟这些代码和ASP还是很神似的。经过输出中间结果,改变SQL语句等方法推断应该是乱码的问题。因为在JSP页面中即使不带任何条件查询显示的结果全部是乱码,而在MySQL Front中查询则显示正常。不知道是不是MySQL的编码和JSP页面的编码不一致造成的。MySQL中的数据是通过MySQL Front从sql脚本文件中导入的,JSP声明的编码方式是GB2312。现在要去统一这个编码也比较麻烦,只好临时偷一下懒:从表单提交大关键字先不进行编码转换(貌似一转换就和数据中的编码不一致了,查不到结果),从数据库读得数据后,在显示时再进行转换。例如:

title=new String((rs.getString(“title”)).getBytes(“ISO-8859-1″),”GBK”);
out.print(title);

不过,我觉得最好的方法还是全部统一编码,这样应该可以省下不少的转换工作。比如都使用UTF-8编码:

●所有的网页的charset设置为UTF-8
●所有网页保存为UTF-8编码格式
●URIEncoding不做设置,默认即可
●MYSQL中default-character-set设置为UTF-8
●页面显示时使用getBytes(“ISO8859_1”)

当然了,不同的环境可能又不一样,不敢保证在所有情况下适用,且本人对JSP不甚了解,仅供参考。

4 Comments

  1. 呵呵,都藏起来了^_^
    麻烦你自己换咯,在右边,样式切换,自己选一个吧~

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.