utf8到utf8mb4 mysqli charset php

时间:2016-02-18 19:06:57

标签: php mysql mysqli utf-8 character-encoding

我刚刚将我的mysql数据库从utf8转换为utf8mb4,因此支持Emojis,但现在我遇到了编码问题。如果我用php打印文本正常显示特殊字符,但它们在数据库中保存为LATIN1×

我遵循了本指南https://mathiasbynens.be/notes/mysql-utf8mb4

在php中,我在建立连接后设置了这样的字符集

 mysqli_set_charset($mysqli, "utf8mb4");
在转换之前,ä被保存为ä,ö被保存为ö等等。

现在:ü - > Ã等等,所以常见的utf8编码问题。

mysql版本是5.5.46所以这不是问题

 database is utf8mb4_unicode_ci
 tabels are utf8mb4_unicode_ci
 varchar and text columns are also utf8mb4_unicode_ci

1 个答案:

答案 0 :(得分:2)

似乎

  mysqli_set_charset($mysqli, "utf8mb4"); 

将charset更改为LATIN1而不是utf8mb4,但使用

  $mysqli->query("set names utf8mb4");

工作正常