Java开发中的乱码问题

    Java开发中的乱码实在是一件让人头疼的事,想起大学那会,时常被乱码所困惑,让人揪心,在网上搜来搜去,却找不到解决的办法,只因为自己没有深入去思考为什么会产生乱码,问题的实质根源处在那里,知识的匮乏让人蛋疼,大学那会确实也浪费了不少光阴呀,不瞎扯了...

一、我们需要知道为什么会产生乱码?

      其实这个问题很简单,编码格式不统一,因为世界上有很多种编码的,目前的编码格式很多,例如 GB2312、GBK、UTF-8、ISO-8859-1等等。具体编码都不多做解释了,只需要明白为什么会产生乱码就OK了。

二、网络传输乱码如何解决?

         注意:java在网络上传输用的是iso-8859-1 编码和解码

       两种解决办法:1.重新转码

       例:String username = request.getParameter("username");

             userName = new String(username.getBytes("ISO-8859-1"),“gbk”);

       当然我们可以写一个工具类,这样显得更专业一点

       public void Tools {
public static String getNewString(String input){
String result = “”;
try{
result = new String(input.getBytes("ISO-8859-1"),“gbk”);
}catch(Exception e){
//可以打印异常
}
return result;
}
      }
      这样在我们想要使用的时候userName = Tools.getNewString("传递从网上获取的字符串");

        2.使用过滤器  

      这个篇幅很长的,可以看专门使用过滤器解决的一些文章,上边解决不了再采用使用过滤器。

三、数据库乱码如何解决?

      说明:其实数据库乱码还是因为编码方式不一样导致的,我曾遇到过 MyEclipse  +  mysql  数据库乱码,原因:数据库编码不对

      先查看你eclipse中的编码方式,默认的是gbk,那我们就以这个为例,保证数据库也全部才有的gbk编码才不会乱码

      修改mysql的时候也修改为gbk

      步骤如下:

            1.打开mysql的配置文件 my.ini具体目录自己可以去安装目录下找,我的目录在: C:\Program Files\MySQL\MySQL Server 6.0

      修改[client]和[mysql]节点下的数据如下,如果没有则添加,有则修改default-character-set=gbk。(两处都要修改,就在这个文件里边)

           2.单独某个数据库的编码修改

     单独设置某个数据库:
           alter database student character set gbk;//student为数据库表名
  命令行修改某个编码:SET character_set_server = gbk;

     查看编码格式的语句:查看编码格式:show variables like 'character%';

          3.通过查看编码格式来查看编码格式是否修改成了gbk


注意,链接的时候加上编码格式    ?useUnicode=true&characterEncoding=gbk

注意:最重要是在数据库后边加上userUnicode=true&characEncoding=gbk

 private static final String DBDRIVER = "com.mysql.jdbc.Driver";

 private static final String DBURL = "jdbc:mysql://localhost:3306/SHR?useUnicode=true&characterEncoding=gbk";

 private static final String DBNAME = "root";

 private static final String DBPWD = "1234";




     



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值