0

データベースから特殊文字 (スウェーデン語: "åäö") を含むテキストを取得するのに問題があります。

通常のクエリを実行すると、

"SELECT * FROM"  

そしてecho結果を出します:

while($row = mysql_fetch_assoc($result))
{
    echo $row['text']; 
}

...結果は問題ありません。

ただし、実行するjson_encode($array)と、特殊文字が置き換えられました。

{"id":"1","question":"fr\u00e5ga \u00e5\u00e4\u00f6"....

データベースを UTF-8 に変換したり、フィールドをutf8_general_ci, utf8_encode($string), utf8_decode($string), ....

4

3 に答える 3

3

あなたの出力は正しいです。これが、JSON に Unicode 文字を埋め込む方法です。

于 2012-05-17T12:00:05.207 に答える
1

この動作は仕様です。これらは JSON Unicode エスケープです。

準拠する JSON パーサーは、それらを正しく解析します。

于 2012-05-17T12:00:02.003 に答える
1
$str='{"id":"1","question":"fr\u00e5ga \u00e5\u00e4\u00f6"}';
$obj=json_decode($str);
var_dump($obj);

これを出力します

object(stdClass)#1 (2) {
  ["id"]=>
  string(1) "1"
  ["question"]=>
  string(13) "fråga åäö"
}

Unicode 文字の JSON エンコーディングが表示されているだけです。

PHP 5.4 では、JSON_UNESCAPED_UNICODEを json_encode に渡すことができ、UTF-8 でエンコードされた文字で JSON が返されます (少なくとも私はそう信じています - まだテストしていません)。

于 2012-05-17T12:01:56.573 に答える