3 に答える
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
http://www.php.net/manual/en/function.json-encode.php#100565から
つまり、引用符 " は無効な JSON を生成しますが、これは json_encode() を使用していて、PHP が魔法のように引用符をエスケープすることを期待している場合にのみ問題になります。エスケープは自分で行う必要があります。
"
に置き換えることができるかもしれませんが\"
、問題は解決すると思います。
json_encode を使用するようにコードを変更する必要があります。適切にutf8でエンコードされたデータを渡す必要があります。
MySQL を使用している場合は、クエリの前に次を実行してデータを取得できます。
SET NAMES 'utf8';
utf8_encodeの使用を調べることもできます。