我在我的数据库中成功发布数据(使用希腊语),我可以在我的CMS中显示它们而没有任何问题。但是,当我将它们作为JSON读取以供以后的Android使用时,我得到类似的东西。
[{"id":"7","name":"\u0391. \u0392\u03ad\u03c1\u03c4\u03b6\u03b9\u03bf\u03c2",
"age":"32","number":"5",
"position":"\u0391\u03bc\u03c5\u03bd\u03c4\u03b9\u03ba\u03cc\u03c2","image":"vertzios.jpg","teams":"\u039d\u03af\u03ba\u03b7 \u0392\u03cc\u03bb\u03bf\u03c5"}]
换句话说,我看不到希腊字母。
这是我获取JSON的代码
<?php
include("../includes/connect.php");
$string="";
$get_posts = "select * from defenders";
$run_posts = mysqli_query($con,$get_posts);
$posts_array = array();
while ($posts_row = mysqli_fetch_array($run_posts)){
$row_array['id'] = $posts_row['id'];
$row_array['name'] = $posts_row['name'];
$row_array['age'] = $posts_row['age'];
$row_array['number'] = $posts_row['number'];
$row_array['position'] = $posts_row['position'];
$row_array['image'] = $posts_row['image'];
$row_array['teams'] = $posts_row['teams'];
array_push($posts_array,$row_array);
}
$string = json_encode($posts_array);
echo $string;
?>
我需要进行某种解码吗?在我的连接文件中,我使用了这个
mysqli_set_charset($con,'utf8');
由于
答案 0 :(得分:1)
您需要使用decodeURI()
转换它们。考虑一下:
"position": "\u0391\u03bc\u03c5\u03bd\u03c4\u03b9\u03ba\u03cc\u03c2"
现在,decodeURI()
将执行:
decodeURI("\u0391\u03bc\u03c5\u03bd\u03c4\u03b9\u03ba\u03cc\u03c2")
"Αμυντικός"
JSON没有受到影响真的很好。因为,这是UTF-8字符,json_encode
将不适用于它们并抛出错误。我还在PHP Manual中写过,如何处理这些东西:
我使用了这个简单的脚本,从StackOverflow中弹出以逃避功能失败:
<?php function utf8ize($d) { if (is_array($d)) { foreach ($d as $k => $v) { $d[$k] = utf8ize($v); } } else if (is_string ($d)) { return utf8_encode($d); } return $d; } ?>