5
4

3 に答える 3

15

db-field が utf8 の場合は、最初に次のことを行う必要があります。

mysql_query("SET NAMES 'utf8'");

データを挿入する前にも、常に「SET NAMES...」を実行する必要があります。本当に utf8 でエンコードされた文字列を保存したことを確認してください!

次に、クエリを実行します。

mysql_query($your_query);

$array = array("tasklist"=>array());    

while($row = mysql_fetch_array($queryExe)){
        $a = array();
        $a["customerID"] = $row['AUTO_ID'];
        $a["name"] = $row['Customer_Name'];
        $a["cargo"] = $row['Type_of_Cargo'];
        $a["destination"] = $row['Destination'];
        $a["quantity"] = $row['Quantity'];
        $a["startdate"] = $row['startdate'];
        $array["tasklist"][] = $a;
}

header("Content-type: application/json; charset=utf-8");

echo json_encode($array);
exit();

サーバーのデフォルトの文字セットがたとえばisoの場合、これらでは不十分であるという経験をしました。その場合、.htaccess で次のことを行う必要があります。

AddDefaultCharset utf-8
于 2013-08-02T05:12:53.293 に答える
1

http://www.php.net/manual/en/function.json-encode.php#100565から

つまり、引用符 " は無効な JSON を生成しますが、これは json_encode() を使用していて、PHP が魔法のように引用符をエスケープすることを期待している場合にのみ問題になります。エスケープは自分で行う必要があります。

" に置き換えることができるかもしれませんが\" 、問題は解決すると思います。

ソース: PHP JSON 文字列、JS 出力の二重引用符をエスケープ

于 2013-08-02T15:28:38.587 に答える
1

json_encode を使用するようにコードを変更する必要があります。適切にutf8でエンコードされたデータを渡す必要があります。

MySQL を使用している場合は、クエリの前に次を実行してデータを取得できます。

SET NAMES 'utf8';

utf8_encodeの使用を調べることもできます。

于 2013-08-02T05:13:19.927 に答える