从php中将任意字符编码为json数组,并在Android中使用它们

时间:2015-01-25 23:11:37

标签: php android arrays json

我正在尝试使用JSON从数据库填充listViewlistView填充正常,但字符将替换为问号。我看了JSON。这些人物都是希腊文。

My JSON Output

我的PHP代码:

    <?php
    try {
        $handler = new PDO('mysql:host=localhost;dbname=database', 'root', 'password');
        $handler->query( 'SET CHARACTER SET utf8' );
        $handler->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch (Exception $e) {
        echo $e->getMessage();
        die();
    }
    $query = $handler->query( 'SET CHARACTER SET utf8' );
    $query = $handler->query('SELECT * FROM markoglou_order');
    $records = array();
    $records = $query->fetchAll(PDO::FETCH_ASSOC);
    $json['categories_markoglou'] = $records;
    echo json_encode($json, JSON_UNESCAPED_UNICODE);

    ?>

截图:

asd

修改

我已尝试使用JSON_UNESCAPED_UNICODE,但它无效。

1 个答案:

答案 0 :(得分:2)

执行以下操作:

  1. 将数据库排序规则更改为utf8_general_ci,并在所需的表格上使用相同的排序规则
  2. 仅对表的字段使用相同的排序规则(varchar,text)
  3. 修改您的文件,如下所示:

    <?php 
    mb_http_output("utf-8");
    header("Content-type:application/json; charset=utf-8");
    try {
    
    $handler = new PDO('mysql:host=localhost;dbname=database', 'root', 'password');
    
    
    $handler->query( 'SET CHARACTER SET utf8' );
    $handler->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch (Exception $e) {
       echo $e->getMessage();
       die();
    }
    
    $query = $handler->query( 'SET CHARACTER SET utf8' );
    $query = $handler->query('SELECT * FROM markoglou_order');
    $records = array();
    
    $records = $query->fetchAll(PDO::FETCH_ASSOC);
    $json['categories_markoglou'] = $records;
    echo json_encode($json, JSON_UNESCAPED_UNICODE);
    
    ?>
    
  4. 然后你将得到希腊语所需的输出。

    希望它有所帮助!!!