好吧,我有一个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和collation转换为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.我的数据库中的插件无法正常工作!我能做什么?
如果您的插入不能正常工作,您插入的数据在数据库中看起来像这样,那么这可能有多种原因!
例子:
??????????