【发布时间】: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 版本已停产,不再受支持。