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

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

deran pan, blg-004

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

## CentOS6.6 在配置文件增加以下设置即可
## file /etc/my.cnf

[mysqld]
default-character-set=utf8
init_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=workScheduleDB";                        
    $username = "panderan";                                                     
    $password = "panderan";                                                     
    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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值