【问题标题】:Problem with 10.4.11-MariaDB (MySql) and PHP 7.2.29 UTF-8 Encoding [duplicate]10.4.11-MariaDB (MySql) 和 PHP 7.2.29 UTF-8 编码的问题 [重复]
【发布时间】:2020-04-17 15:43:26
【问题描述】:

我在从 MariaDB 数据库中获取 UTF-8 编码字符串时遇到问题。今天我将我的 XAMPP-Distro 更新为 10.4.11-MariaDB (MySql) 和 PHP 7.2.29,现在出现了一个奇怪的问题,旧版本没有出现。

初步信息: 我正在将工作中的 MariaDB 数据库(生产系统)的数据库转储中的数据导入本地数据库。并且在本地数据库上出现了问题。

当我在本地系统上通过 PHP (mysqli) 向数据库发送查询时(代码与生产系统上的相同),我得到了错误的编码:

如果我使用以下 php 函数将数据库中的文本包装起来

utf8_decode($textFromTheDatabase);

一切正常。

我还在每次查询之前尝试了以下几行,但这并没有改变任何东西:

$dbConnection->set_charset('utf8');
$dbConnection->query("SET NAMES 'utf8'");

如上所述,一切都可以在生产系统上运行,但不能在新的 XAMPP 安装上运行。当我的本地系统上仍然有旧的 XAMPP 版本时,一切正常。所以我觉得我的本地数据库或者PHP或者Apache的配置有问题?

【问题讨论】:

  • 不,这不能解决我的问题。那里提到的所有东西我都试过了!
  • ok 降级到 XAMPP 版本 7.1.26-1 可以解决问题...但是为什么它适用于这个版本而不适用于较新的版本?
  • 这可能改变了 MariaDB 和 PHP 版本。他们现在怎么样了?
  • 现在(降级的)版本是:PHP-Version: 7.1.26, 10.1.38-MariaDB
  • 如果这是一个持续的需求,我会将 PHP 更新到最新版本 7.4.4,看看是否仍然有效。然后我会选择最新的 MariaDB 版本,即 10.4.12。您现在使用的 PHP 版本已停产,不再受支持。

标签: php mysql mysqli mariadb


【解决方案1】:

不要使用任何解码函数;这只会让事情变得更糟。

您的图片显示了“Mojibake”问题。其原因在这里讨论: Trouble with UTF-8 characters; what I see is not what I stored

【讨论】:

  • 那是我的问题。我不想使用解码功能。我唯一想说的是它可以与解码功能一起使用。
【解决方案2】:

好的,现在我有了解决问题的方法:我使用 PHP 7.4.4 和 MariaDB 10.4.11 更新到 XAMPP 7.4.4。然后我正确设置了字符集和排序规则:

character-set-server = latin1
collation-server = latin1_swedish_ci

然后就成功了

【讨论】:

    猜你喜欢
    • 2019-09-12
    • 1970-01-01
    • 1970-01-01
    • 2010-12-15
    • 2013-03-19
    • 2014-03-18
    • 2018-02-16
    • 1970-01-01
    • 2017-03-02
    相关资源
    最近更新 更多