0

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 として表示するのはなぜですか?

4

4 に答える 4

0

エンコーディングJSON文字列を作成する前に、値またはデータをurlencodeする必要がある場合があります。

また編集:すべてがUTF8中心、データベース接続、データベーステーブル、およびコンテンツタイプに対して行ったことを確認する必要があります...

于 2012-05-21T08:59:17.820 に答える
0

*.phpファイルとMySQLデータベースでutf-8エンコーディングを使用することをお勧めします。

于 2012-05-21T09:01:03.857 に答える
0

SET NAMES の代わりに使用する必要があります$dbh->query('SET CHARACTER SET utf8');

于 2012-05-22T05:37:35.147 に答える
0

照合順序が UTF-8 であると言ったことは知っていますが、実行してみてください。

$dbh->query('SET NAMES UTF-8');

PDO オブジェクトを作成した後、UTF-8 を使用する必要がある場合でも、デフォルトで ISO-8859-1 になる場合があることがわかりました。

于 2012-05-21T09:42:34.450 に答える