java,mysql,tomcat乱码问题
作者:yjjie | 日期2009-05-16 22:19:55
自从学习java以来,乱码问题,在思路上一直都是混乱的...各种编码名字,各种软件的不同的叫法==,太多了!,本次,我将以最简单的方法来解决一下这个乱码的问题!
我们抛去那些GBK,ISO,GB2313等等编码,用一个能显示所有文字的编码:UTF-8,是初学者可以暂时放弃这么多的编码问题。当然我们得付出额外的容量来存储。
首先java:java默认的程序字符编码是:utf8,所以它有更好的夸平台性。但是不是所有的编辑器都是用UTF8编码的,比如我们用记事本,或者LINUX下的vi来做编辑。为了编码统一,可以使用编译的时候叫上文本的编码做参数,具体大家网上找!
还有就是java读文件时候的编码问题,那只能用程序来转换,比如:new String(str.getBytes("ISO8859-1"),"utf-8")来进行转换
java和其他应用直接的转换问题。相同编码在不同的软件里有不同的命名。诶!!!那就用utf-8吧,基本所有程序都这么叫,只是有时候叫utf8有时候是utf-8
mysql默认是latin1。windows下安装的时候可以设置默认编码集,linux下就要配置文件配置,但是默认是latin1(谁叫这些东西都不是中国人开发的....)
所以我们要用utf8,那我们建立表的时候给他制定编码
比如
这样在数据库上就配置好utf8编码了,但是还有一点!
那就是链接数据库的时候也要制定链接的编码
如:
jdbc:mysql://localhost:3306/mydb?characterEncoding=utf-8
可能版本不同有一点区别,有时候是:
jdbc:mysql://localhost:3306/mydb?characterEncoding=utf8
下面就是tomcat的问题了
在jsp(servlet)提交表单的时候以POST提交,tomcat会以页面编码来编码参数
那么我们页面是以UTF-8编码的,我们就设置 request.setCharacterEncoding("utf-8");
而后接受提交的内容
但是GET方式则以默认的ISO8859-1 来编码大家都说这个是一个BUG啦^_^
所以我们request.getParameter("name").getBytes("ISO8859-1"),"UTF-8“); 来转换参数!
当然还有一个解决方法,就是修改tomcat的server.xml文件,这个文件在tomcat\conf\server.xml
最后的URIEncoding="utf-8" 就是添加的内容
我想我的理解上还有错误的,没说清楚的,或者错的地方还请指正!
评论: 0 查看次数: 484
发表评论


