php json_encode中的德语元音变音符问题

2022-08-30 23:57:40

我在使用包含德语元音变音符的数据库中的数据时遇到了麻烦。基本上,每当我收到包含变音符的数据时,它都是一个带有询问标记的黑色正方形。我通过把

mysql_query ('SET NAMES utf8')

在查询之前。

问题是,一旦我在查询结果上使用,包含元音变音符的值就会得到。我可以通过直接在浏览器中调用php文件来看到这一点。除了在编码为JSON并在JS中对其进行解码之前替换这些字符之外,还有其他解决方案吗?json_encode(...)null


答案 1

看看这里提到的这个非常优雅的解决方案:

json_encode( $json_full, JSON_UNESCAPED_UNICODE );

如果问题在代码中的其他任何地方都没有,这应该可以解决它。

编辑:元音变音符问题可能是由各种来源引起的,例如HTML文档的字符集,数据库格式或字符串运行的一些以前的php函数(当遇到元音变音符问题时,您绝对应该查看多字节函数)。

这些问题往往非常烦人,因为它们在大多数情况下很难跟踪(尽管这并不像几年前那么糟糕)。上面的函数修复了 - 如上所述 - json_encode的变音符号问题...但是,问题很可能是由应用程序的不同部分引起的,而不是由此特定功能引起的。


答案 2

我知道这可能是旧的,但这里有一个更好的解决方案:

使用 utf-8 字符集定义文档类型:

<?php header('Content-Type: application/json; charset=utf-8'); ?>

确保所有内容都已utf_encoded。JSON 仅适用于 utf-8!

function encode_items(&$item, $key)
{
    $item = utf8_encode($item);
}
array_walk_recursive($rows, 'encode_items');

希望这有助于某人。


推荐