【问题标题】:10.2.25-MariaDB not allowing data in multiple languages10.2.25-MariaDB 不允许使用多种语言的数据
【发布时间】:2020-01-30 19:08:18
【问题描述】:

Mysql版本:10.2.25-MariaDB

ENGINE=InnoDB

我正在尝试保存数据,例如:پہمغیابج ماوبرنم کرنامت

但它只显示问号:????

我已经试过了:

Utf8, Utf8mb4 charset & utf8_general_ci, utf8_unicode_ci collation

但它们似乎都没有工作。

我应该使用什么字符集或排序规则来保存多个数据 语言?

更新:

同一个项目正在我的本地机器上以多种语言保存和检索数据(在本地机器上使用 mysql)。但是我部署了我的代码的服务器正在使用 maria-db。

更新 2:

为了确保它的数据库问题和客户端正在向数据库发送正确的数据,我在将数据保存到数据库之前将数据保存到了一个文本文件。文本文件包含正确的数据,但数据库中有???

【问题讨论】:

  • 但它只显示问号 在 UTF8 CLI 控制台窗口中?
  • 也许您的客户无法将它们显示回来,并且数据库中的数据很好。
  • 我正在使用 phpmyadmin,我刚刚检查了表中的数据,它有 ???
  • 我已经更新了问题,请检查

标签: mysql mariadb innodb


【解决方案1】:
SHOW VARIABLES LIKE 'character_set%'

检查character_set_databasecharacter_set_connectioncharacter_set_result

很可能服务器默认字符集不是 UTF-8,因此您需要在连接后通过发出 SET NAMES UTF8 手动配置连接。

在 php 中你可以使用 $connection->set_charset('UTF8') 来做同样的事情

您还需要检查您的表格字符集 (SHOW CREATE TABLE xyz)。 如果您的数据库字符集未设置为 UTF8,并且您创建的表没有为每个表/列指定字符集,则这些表不能保存 UTF8 字符,您需要重新创建它们。

【讨论】:

  • 谢谢,您的回答给了我更新连接字符串的线索。
【解决方案2】:

我在connectionstring 中添加了charset=utf8,它起作用了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-05
    • 1970-01-01
    • 2017-02-01
    • 1970-01-01
    相关资源
    最近更新 更多