Val*_* Ru 15 php json character-encoding
我从包含德语变音符号的数据库中获取数据时遇到了麻烦.基本上,每当我收到包含变音符号的数据时,它都是带有询问标记的黑色方块.我把它解决了
mysql_query ('SET NAMES utf8')
Run Code Online (Sandbox Code Playgroud)
在查询之前.
问题是,一旦我json_encode(...)
在查询结果上使用,包含变音符号的值就会得到null
.我可以通过直接在浏览器中调用php文件来看到这一点.除了在编码到JSON之前替换这些字符并在JS中解码它之外还有其他解决方案吗?
GDY*_*GDY 22
看看这里提到的非常优雅的解决方案:
json_encode($json_full, JSON_UNESCAPED_UNICODE);
Run Code Online (Sandbox Code Playgroud)
如果问题不在您的代码中的任何其他位置,则应该修复它.
mff*_*fap 13
我知道这可能是旧的,但这是一个更好的解决方案:
使用utf-8字符集定义文档类型:
<?php header('Content-Type: application/json; charset=utf-8'); ?>
Run Code Online (Sandbox Code Playgroud)
确保所有内容都是utf_encoded.JSON仅适用于utf-8!
function encode_items(&$item, $key)
{
$item = utf8_encode($item);
}
array_walk_recursive($rows, 'encode_items');
Run Code Online (Sandbox Code Playgroud)
希望这有助于某人.
您可能只想在浏览器中以某种方式显示文本,因此一种选择是使用来将变音符号更改为HTML实体htmlentities()
。
以下测试对我有用:
<?php
$test = array( 'bla' => 'äöü' );
$test['bla'] = htmlentities( $test['bla'] );
echo json_encode( $test );
?>
Run Code Online (Sandbox Code Playgroud)
这里唯一重要的一点是 json_encode() 仅支持 UTF-8 编码。 http://www.php.net/manual/en/function.json-encode.php
所有字符串数据必须采用 UTF-8 编码。
因此,当非 utf-8 字符串中有任何特殊字符时,json_encode 将返回 null 值。
因此,要么将整个项目切换为 utf-8,要么确保在使用 json_encode() 之前对任何字符串进行 utf8_encode() 编码。
归档时间: |
|
查看次数: |
37606 次 |
最近记录: |