MySQL 查询数据库后返回中文为问号

之前开发时一直用的PHP5.X,连接数据库时一直使用mysql扩展,最近把PHP升级之后,没有了mysql扩展,然后更换了mysqli和PDO扩展,查询到的数据中包含的中文无法显示,返回的都是问号,不确定是数据库存储时的问题还是返回后的编码问题。于是先通过终端登录数据库,查询了数据,发现存储的数据没有问题,所以基本断定返回的结果的编码的问题。

通过Google、百度,发现几乎所有的结果都是老版本的,还是采用的mysql扩展,我参照其中的操作进行相应的尝试,把所有的编码格式进行了统一为utf-8,但是查询到的结果的中问还是?,这就让我很郁闷了,再进行查找,后来发现除了需要设置编码格式之外还需要一条语句

以utf-8编码为例

需要在查询数据库set names utf8

面向对象

$conn = new mysqli($servername,$user,$password);

增加 $conn->query("set names utf8");

$pdo = new PDO("mysql:host=$servername", $username, $password); 

增加 $pdo->query("set names utf8");

面向过程

$conn = mysqli_connect($servername,$user,$password);

增加 mysqli_query($conn,"set names utf8");

你可能感兴趣的:(MySQL 查询数据库后返回中文为问号)