Php Mysql(UTF-8)的一些字符仍然是bug

好吧,我有一个PHP脚本,从Steam web-api获取昵称,并将它们插入到mysql数据库中.他们中的许多人都有罕见的俄罗斯和希腊人物.我在php.ini和所有的php文件中将php设置为utf-8

mb_internal_encoding('utf-8');

我的PDO连接器配置为处理utf8

$connection = new PDO('mysql:host=localhost;dbname=d2bd;mysql:charset=utf8mb4', 'root', '');
$connection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$connection->setAttribute(PDO::ATTR_PERSISTENT, true);
$connection->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_ci'");

我的mysql数据库已正确配置utf8mb4

character_set_client utf8mb4
character_set_connection utf8mb4
character_set_database utf8mb4
character_set_filesystem binary
character_set_results utf8mb4
character_set_server utf8mb4
character_set_system utf8
character_sets_dir C:\xampp\mysql\share\charsets\
collation_connection utf8mb4_unicode_ci
collation_database utf8mb4_unicode_ci
collation_server utf8mb4_unicode_ci
completion_type NO_CHAIN
concurrent_insert AUTO
connect_timeout 10
core_file OFF

简而言之,我接受了web-api的输入并用uft8_encode()对其进行编码.然后我将其插入数据库.问题是某些字符编码不好,当我从数据库中调用它们时,它们都被窃听.

例1:

1.输入 – > Перуанскийчертовски

2.Encode – > ÐÐμÑÑанÑкийÑÐμÑÑовÑки

3.插入DB

4.从DB中选择 – > Ð?ÐμÑ?Ñ?анÑкийÑ?ÐμÑ?Ñ?овÑкÐ

5.Decode

6.输出 – > ? ?анский ? ? ?овск

例2:

1.输入 – > $| / | 1↓_€♥J

2.Encode – > $| / | 1,J

3.插入DB

4.从DB中选择 – > 1 ??“¥J

5.Decode

6.输出 – > 1 ?? _ ? ? J

解决方法:

字符/字符集/整理问题的清单

包括mysql,mysqli,PDO

内容

>免责声明
>我的数据库中的插件无法正常工作!我能做什么?
>更改数据库或表的字符集和排序规则
>设置skript文件的编码
>使用php或meta标签设置页面的字符集
> UTF8和UTF8mb4有什么区别?
>回答这个具体问题
>更多信息/其他链接
>附注

1.免责声明

这个答案不仅应该回答这个问题,而且答案应该更广泛一些,所以更多的人找到更快的捆绑和良好的答案!

!重要的提醒!
如果您在数据库中更改某些内容,请始终使用数据库备份!检查2次,或3次!

我愿意接受改进和评论,例如错误更正.
另外,如果语法不完美我会道歉:D

如果你遇到这样的问题:

> Php Mysql(UTF-8,utf8mb4)一些字符仍然是bug
>如何将整个MySQL数据库characterset和collat​​ion转换为UTF-8?
>尝试将UTF-8插入MySQL时,“字符串值不正确”
>在my.cnf中将MySQL默认字符集更改为UTF-8?
>使用utf8mb4与php和mysql
> PDO MySQL和破坏的UTF-8编码
>在php Mysql中插入数据时出错
> PHP PDO:charset,设置名称?
>在MySQL中设置名称utf8?
> PHP mysql charset utf8问题
> UTF-8一路走来
>使用PHP操纵MySQL的utf8mb4数据
> ERROR 1115(42000):未知字符集:mysql中的’utf8mb4′

…那么我的回答可能对你有所帮助!

2.我的数据库中的插件无法正常工作!我能做什么?

如果您的插入不能正常工作,您插入的数据在数据库中看起来像这样,那么这可能有多种原因!

例子:

??????????
上一篇:mysql支持emoji表情符存储


下一篇:MySQL 支持 emoji 图标存储