2011-01-02 15 views
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" でなければなりません。

ありがとうございます。

+1

'mysql_set_charset( "UTF8")の後に;'右にmysql_connect –

+0

なぜあなたは、プリントアウトしていないMySQLのデータだけでなく、JSON文字列の後に?どうしてあなたは少なくともMysqlやJSONの質問に答えたいのですか? –

+0

@Col Shrapnelに感謝しています - それはトリックでした - 今は正しく動作しているようです。 –

答えて

3

mysql_set_charset("utf8"); 右にmysql_connect