Home  >  Article  >  Backend Development  >  关于php7 设计链接mysqlutf8mb4字符集的问题

关于php7 设计链接mysqlutf8mb4字符集的问题

WBOY
WBOYOriginal
2016-07-06 13:51:301419browse

通过epel源安装php7后连接数据库直接提示:

<code>Unable to set client connection character set: utf8mb4</code>

使用utf8则没有报错

找到一种解决方案: 直接使用sql语句设置字符集则

<code>SET NAMES 'utf8mb4';</code>

但是使用这种方法, 总感觉不好, 而且之前代码需要改动的地方也不少, 有点划不来

大大们, 有解决方案吗, 这里先谢过了

PS: 没辙google了一天都没有找到解决方案, 不过估计是很傻B的问题

================================================================

问题原因找到了, 果然只是配置的问题

<code>$pdo = new PDO('mysql:host=localhost;dbname=my_db;charset=utf8mb4', 'db_user', 'db_password');</code>

to:

<code>$pdo = new PDO('mysql:host=localhost;dbname=my_db', 'db_user', 'db_password', array(
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4',
));</code>

不知道为啥新版本的pdo的驱动无法直接设置连接字符集为utf8mb4, 讲道理应该是向后兼容才对的, 不过至少找到解决方案了 :-D

回复内容:

通过epel源安装php7后连接数据库直接提示:

<code>Unable to set client connection character set: utf8mb4</code>

使用utf8则没有报错

找到一种解决方案: 直接使用sql语句设置字符集则

<code>SET NAMES 'utf8mb4';</code>

但是使用这种方法, 总感觉不好, 而且之前代码需要改动的地方也不少, 有点划不来

大大们, 有解决方案吗, 这里先谢过了

PS: 没辙google了一天都没有找到解决方案, 不过估计是很傻B的问题

================================================================

问题原因找到了, 果然只是配置的问题

<code>$pdo = new PDO('mysql:host=localhost;dbname=my_db;charset=utf8mb4', 'db_user', 'db_password');</code>

to:

<code>$pdo = new PDO('mysql:host=localhost;dbname=my_db', 'db_user', 'db_password', array(
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4',
));</code>

不知道为啥新版本的pdo的驱动无法直接设置连接字符集为utf8mb4, 讲道理应该是向后兼容才对的, 不过至少找到解决方案了 :-D

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn