首页  >  文章  >  数据库  >  为什么 json_encode() 无法使用 Latin1 编码对 MySQL 数据库中的重音字符进行编码?

为什么 json_encode() 无法使用 Latin1 编码对 MySQL 数据库中的重音字符进行编码?

Barbara Streisand
Barbara Streisand原创
2024-10-30 11:55:02335浏览

Why Does json_encode() Fail To Encode Accented Characters From a MySQL Database with Latin1 Encoding?

JSON 编码在 MySQL 中与 UTF-8 字符的斗争

当尝试使用 latin1_swedish_ci 编码从数据库中检索重音字符并使用 json_encode() 将它们编码为 JSON 时,结果可能出乎意料。预期结果(例如“Abord â Plouffe”)会转换为“null”,从而使编码的 JSON 无效。

要解决此问题,需要在之前将检索到的值显式编码为 UTF-8应用 json_encode()。这可确保 JSON 输出包含正确的 UTF-8 字符并进行相应的验证。以下是如何实现此解决方案:

<code class="php">// Initialize an empty array for the encoded result set
$rows = array();

// Iterate over the PHPMyAdmin result set
while ($row = mysql_fetch_assoc($result)) {
  // Apply UTF-8 encoding to each row value
  $rows[] = array_map('utf8_encode', $row);
}

// Output the encoded $rows
echo json_encode($rows);</code>

在此修改后的代码中,我们利用 array_map 函数将 utf8_encode 应用于结果集中每行的每个元素。这可确保在执行 json_encode 之前所有字符都正确编码为 UTF-8。因此,生成的 JSON 输出将准确反映预期字符,并根据需要保留重音字符。

以上是为什么 json_encode() 无法使用 Latin1 编码对 MySQL 数据库中的重音字符进行编码?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn