mysql テーブルからデータを取得し、json でエンコードする PHP ファイルがあります。スカンジナビア文字を含む行が mysql に存在するまで、すべてが正常に機能します。次に、nullのみを返します
{"key":[{"Name":null}]}
どうすればそれを機能させることができますか? 問題は PHP または MYSQL にありますか? phpファイルの先頭に入れようとしましheader('content-type: text/html; charset: utf-8');
たが、うまくいきませんでした
<?php
header('content-type: text/html; charset: utf-8');
include 'config.php';
$sql = "Select * from table;
try {
$dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $dbh->query($sql);
$results = $stmt->fetchAll(PDO::FETCH_OBJ);
$dbh = null;
echo '{"key":'. json_encode($results) .'}';
} catch(PDOException $e) {
echo '{"error":{"text":'. $e->getMessage() .'}}';
}
?>
このコードを使用すると:
<?php
$con = mysql_connect("localhost","adsasd","asdasd");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("table", $con);
$result = mysql_query("SELECT NAME from table where ID=1");
while($row = mysql_fetch_array($result))
{
echo $row['TABLE'];
}
mysql_close($con);
?>
本来あるべき文字を示しています: äöåäö
では、問題はそのjson_encode()
部分にあるのでしょうか。また、スカンジナビア文字を記号などとして表示するだけでなく、行全体を null として表示するのはなぜですか?