10.4.11-MariaDB (MySql) 和 PHP 7.2.29 UTF-8 编码问题
Problem with 10.4.11-MariaDB (MySql) and PHP 7.2.29 UTF-8 Encoding
我在从 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?
的配置有问题
好的,现在我有一个问题的解决方案:我更新到 XAMPP 7.4.4,PHP 7.4.4 和 MariaDB 10.4.11。然后我正确设置了字符集和排序规则:
character-set-server = latin1
collation-server = latin1_swedish_ci
然后成功了
不使用任何解码功能;这只会让事情变得更糟。
您的图像显示 "Mojibake" 问题。其原因在这里讨论:
我在从 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?
的配置有问题好的,现在我有一个问题的解决方案:我更新到 XAMPP 7.4.4,PHP 7.4.4 和 MariaDB 10.4.11。然后我正确设置了字符集和排序规则:
character-set-server = latin1
collation-server = latin1_swedish_ci
然后成功了
不使用任何解码功能;这只会让事情变得更糟。
您的图像显示 "Mojibake" 问题。其原因在这里讨论: