日期:2014-05-16  浏览次数:20834 次

mysql保存中文乱码的原因和解决办法(首发经典实用版)

    当你遇到这个mysql保存中文乱码问题的时候,期待找到mysql保存中文乱码的原因和解决办法(首发经典实用版)这样一篇能解决问题的文章是多么激动人心。

    也许30%的程序员会选择自己百度,结果发现网友已经贴了很多类似“mysql 中文乱码”、“php mysql 中文乱码”、“mysql5.5中文乱码”、“mysql 乱码”、“mysql乱码问题”、“mysql jsp 乱码”、“mysql jdbc 乱码”、“mysql 查询乱码”、“mysql 导入数据乱码”等一系列问题,到底哪个是自己要找的能解决自己问题的呀?15%的程序员一看就懵了,剩下15%的程序员自己摸索或求教别人了。70%的程序员干脆不干了,干不动咱还是程序员,这种浪费生命的事情让别人干去把,呵呵。

    其实mysql的乱码问题,说复杂也非常地负责,说简单简单的不行!区别就在于明白mysql乱码的本质原因,本文就从这个角度目的让煞笔程序员都掌握如何处理这个乱码问题

    (1)网站本身的编码。这不多说了,自己看看设置对了没,比如我设置的GBK就检查下编码是不是GBK。(一般通过文件右击属性来看,或建立工程的时候来统一设置)

    (2)数据库连接字符串的编码。比如java中我连接mysql的相关语句如下:

 public static String driverName = "com.mysql.jdbc.Driver";
 public static String userName = "root";
 public static String userPasswd = "123456";
 public static String dbName = "myBook";
 public static String url = "jdbc:mysql://localhost/" + dbName + "?user="
   + userName + "&password=" + userPasswd
   + "&useUnicode=true&characterEncoding=GBK";

 

。。。。。

Class.forName(driverName).newInstance();
    connection = (Connection) DriverManager.getConnection(url);

     如上面的代码中,加粗的就是我要说的部分,可以设置为你想要的字符串类型,这里设置的是GBK,这仅仅是java语言的示例,其他语言asp、php原理是一样的都有这样的数据库字符串链接关于字符集的配置,不会就查查手册或百度一下,这个很容易找到,如果百度还找不到,那360干他也对。

    (3)mysql的字符集设置。

    这个是重点了,一般都是在这里搞错而出现了mysql乱码。

    mysql编码设置可以分为三种设置:数据库的编码、表的编码、和字段的编码。

    a、数据库的编码:

    在sqlyog工具中操作把,右击数据库点击更改数据库,如图

 

   

     设置就可以了,煞笔不煞笔,简单不简单。

    b、表的编码:

    mysql很扯淡的是,表级别也设置了编码,说说咋设置把

 

     右击要修改编码的表,点击更改表如上图,点了以后如下图:

    

    点高级属性,表的字符编码设置很煞笔很简单,看到了把。记得修改完毕后,一定要点击“Alter”才行呀!这个按钮很容易被忽略,操蛋的sqlyog呀!

    c、字段的编码:

    mysql确实很扯淡,字段都有编码设置,还是上面的更改表,不过不点高级属性了。看图:

   

     坑爹的默认不显示,对就是在右下角呢!看到了把,把对号取消把,取消后你看到了下图:

   

    终于看到了字段后面跟的字符编码设置,他奶奶的熊,终于都找全了。设置把。记得修改完毕后,一定要点击“Alter”才行呀!这个按钮很容易被忽略,操蛋的sqlyog呀!

       最后再出一个绝招把:

   SHOW CREATE TABLE 表名

   CREATE TABLE `wen` (
  `id` int(8) DEFAULT NULL,
  `bookid` int(8) DEFAULT NULL,
  `title` varchar(200) COLLATE gbk_bin DEFAULT NULL,
  `content` longtext COLLATE gbk_bin
   ) ENGINE=InnoDB DEFAULT CHARSET=gbk COLLATE=gbk_bin CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC

  看到了把 哈哈!

    对于mysql保存中文乱码的原因和解决办法(首发经典实用版)的总结:(1)程序员都不是煞笔,是软件做的煞笔,软件没有按照产品去做,易用性不好所以才导致大家找不到,以后的软件一定要把程序员当对用户体验要求极高得用户才能牛逼。(2)程序员有点煞笔,遇到问题头疼的要死,脑细胞都死了很多,经常遇到这样的事情解决不了还打击