php - 批量插入包含俄语的字符串

标签 php mysql pdo utf-8 sqlyog

我正在使用 PHPExcel 将电子表格转换为数据库,并且单元格值恰好包含俄语。如果我运行 mb_detect_encoding(),我会被告知文本是 UTF8,如果我设置 UTF8 header ,那么我会看到正确的俄语字符。

但是,如果我将它编译成一个字符串(过程中只涉及addslashes)并将其插入表中,我会看到很多???。我已将表字符集设置为 utf8mb4,并将排序规则设置为 utf8mb4_general_ci。我还运行了 $this->db->query("SET NAMES 'utf8mb4'");在我的数据库连接上。

我使用多部分插入运行 PDO query() 并获取 ???s,但是如果我将查询输出到屏幕,我会得到 ПÐ⁄Ñ ,这将是有效的 UTF8。为什么它不能正确存储在数据库中?

最佳答案

我保留了这个问题而不是删除它,以便有人可能会发现答案有帮助。

我之所以苦苦挣扎是因为在 SQLYog 中它默认不显示 Charset 列。 Alter TableView 上有一个选项显示“隐藏语言选项”,该选项将显示当 SQLyog 创建表时,它使用默认服务器字符集,而不是您定义的表字符集。我不确定这是否正确 - 但解决方案只是打开列字符集设置并检查它们是否符合您的预期。

关于php - 批量插入包含俄语的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34048706/

相关文章:

php - 如何处理 fatal error : cURL error 7: Failed to connect to xxxx port 443

php - PDO 'UPDATE' 带参数的语句不起作用

mysql - Visual Studio 2017无法加载MySQL数据库

具有两个关系表的Mysql嵌套查询

php - 可以设置 iAMP 吗?

php - 如何将一些mysql转换成pdo

php - PDO PARAM_STR 和长度

php - Laravel 偶尔无法读取缓存

php - Zend 框架 : Plugin paths

php - 如何使用 symfony2 导入邮件?