Ubuntu中Mysql中文存储乱码设置问题

来源:互联网 发布:魔兽数据库7.0手机 编辑:程序博客网 时间:2024/06/08 11:10

Ubuntu中Mysql中文存储乱码设置问题

  之前是在CentOS上用着mysql,关于CentOS上mysql的中文设置很简单。将mysql的配置文件按如下修改后重启mysql服务,之后中文数据便能的存入去处了。

## CentOS6.6 在配置文件增加以下设置即可## file /etc/my.cnf[mysqld]default-character-set=utf8init_connect='SET NAMES utf8'[client]default-character-set=utf8

  但今天要在Ubuntu16.04上安装一下mysql,同样中文数据不正常。在Ubuntu上查看mysql的字符变量如下:

mysql> show variables like "%char%";+--------------------------+----------------------------+| Variable_name            | Value                      |+--------------------------+----------------------------+| character_set_client     | utf8                       || character_set_connection | utf8                       || character_set_database   | latin1                     || character_set_filesystem | binary                     || character_set_results    | utf8                       || character_set_server     | latin1                     || character_set_system     | utf8                       || character_sets_dir       | /usr/share/mysql/charsets/ |+--------------------------+----------------------------+8 rows in set (0.00 sec)

  我首先就照着CentOS方式改了一下my.cnf配置文件,但是重点是mysql重启不起来了。这就尴尬了。百度了半天找到一篇文章Ubuntu的MySQL中文乱码问题–自己躺坑,终于知道为什么了。Ubuntu的设置方法如下:

## Ubuntu 16.04 在配置文件增加以下设置即可## file /etc/mysql/my.cnf[client]                                                                        default-character-set=utf8                                                      [mysqld]                                                                        character-set-server=utf8    # default-character-set 是不对的[mysql]                                                                         default-character-set=utf8 

  如此修改后mysql的服务便能顺利重启,中文也能正确存取了。

  但是,当我在主机屋玩了一下免费空间后,同样的问题来了。但是这次你没办法去改配置,重启服务,你连数据库都创建不了,只能用给你已经创建好的一个指定名的数据库。当我把数据导入后,同样查出的中文是??。这次只能改代码的。基于上次对配置的修改,数据库连接的代码修改后如下:

function connect_to_mysql()                                                     {                                                                                   $conn=Null;                                                                     $dsn = "mysql:host=localhost;dbname=DB_Name";                            $username = "username";                                                         $password = "password";                                                         try {                                                                               $conn = new PDO($dsn, $username, $password);                                    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);             } catch (PDOException $e) {                                                         echo "Connection failed:" . $e->getMessage();                               }          $conn->query('set NAMES \'utf8\';');                     #增加行                       $conn->query('set character_set_database=\'utf8\';');    #增加行                 $conn->query('set character_set_server=\'utf8\';');      #增加行     return $conn;}
0 0
原创粉丝点击