1
私は、mySQLデータベースからデータを抽出してJSONとしてエンコードする簡単なPHPスクリプトを用意しています。問題は、特殊文字(ドイツ語のäやßの文字など)がJSONレスポンスから削除されることです。単一のフィールドの最初の特殊文字の後のすべてが取り除かれます。mySQL/PHPで特殊文字を削除JSON
フィールドはutf8_binに設定され、phpMyAdminでは文字が正しく表示されます。
PHPスクリプトは次のようになります。
<?php
header("Content-type: application/json; charset=utf-8");
$con = mysql_connect('database', 'username', 'password');
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("sql01_5789willgil", $con);
$sql="SELECT * FROM weightevent";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$events = array();
while($row = mysql_fetch_array($result))
{
$eventid = $row['eventid'];
$userid = $row['userid'];
$weight = $row['weight'];
$sins = $row['sins'];
$gooddeeds = $row['gooddeeds'];
$date = $row['date'];
$event = array("eventid"=>$eventid, "userid"=>$userid, "weight"=>$weight, "sins"=>$sins,
"gooddeeds"=>$gooddeeds, "date"=>$date);
array_push($events, $event);
}
$myJSON = json_encode($events);
echo $myJSON;
mysql_close($con);
?>
出力例:
[{"eventid":"2","userid":"1","weight":"70.1","sins":"Weihnachtspl","gooddeeds":"situps! lots and lots of situps!","date":"2011-01-02"},{"eventid":"3","userid":"2","weight":"69.9","sins":"A second helping of pasta...","gooddeeds":"I ate lots of salad","date":"2011-01-01"}]
- >最初のレコードのフィールド '罪' の値が "Weihnachtsplätzchen" でなければなりません。
ありがとうございます。
'mysql_set_charset( "UTF8")の後に;'右にmysql_connect –
なぜあなたは、プリントアウトしていないMySQLのデータだけでなく、JSON文字列の後に?どうしてあなたは少なくともMysqlやJSONの質問に答えたいのですか? –
@Col Shrapnelに感謝しています - それはトリックでした - 今は正しく動作しているようです。 –