2

JSON_encodeMySQLデータベースからデータを取得しようとしています。DB内の文字はそのままです。

たとえば、一部のデータには次のものが含まれています

ブラウザに印刷すると、特殊文字を含むすべてのアイテムで次のようになります。

{"category":null}

これが私がテストに使用しているコードの非常に基本的な骨抜きバージョンです:

$sql = mysql_query("SELECT category FROM master_cat ORDER BY category ASC");
    while ($row = mysql_fetch_assoc($sql))
        $output[] = $row;

print(json_encode($output));

WebページでJSONを読んでいるときに、実際のデータをブラウザに表示するにはどうすればよいnullですか?

4

2 に答える 2

4

テキストフィールドで使用utf8_encodeできますが、データが実際にそこにあることを確認できますか?たぶん、JSONエンコードではなくHTMLでデータを出力しますか?私のシステムでは、UTF8が認識されるか、エラーが発生するか、一部の文字が切り捨てられるためです。

データベースデータが欠落しているというNULLの匂い。

データがそこにある場合、次のようになります。

mysql_query('SET NAMES utf8;');
$sql = mysql_query("SELECT category FROM master_cat ORDER BY category ASC");
while ($row = mysql_fetch_assoc($sql))
    $output[] = array_map('utf8_encode', $row);

print(json_encode($output));

MIMEタイプと文字セットも明示的に指定することをお勧めします。

Header('Content-Type: application/json; charset=UTF-8');

正しいJSONコンテンツタイプは何ですか?を参照してください。

于 2012-09-12T22:58:00.253 に答える
2

マルチバイトUnicode文字を文字通りエンコードするには、 JSON_UNESCAPED_UNICODEを使用する必要があります (デフォルトでは\ uXXXXとしてエスケープされます)。PHP5.4.0以降で使用できます。この場合:

echo json_encode($output, JSON_UNESCAPED_UNICODE);
于 2015-06-25T16:40:33.467 に答える