JSON和希腊字母

时间:2015-12-11 11:56:02

标签: php json

我在我的数据库中成功发布数据(使用希腊语),我可以在我的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');

由于

1 个答案:

答案 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;
    }
?>