2012-03-30 14 views
1

ñなどの特殊文字を持つ配列をエンコードしようとしています。私がそれをするとき、それはnullを返します。eZend_Json :: encodeまたはjson_encode(特殊文字)

Zend_Json::$useBuiltinEncoderDecoder = true: 

そしてそれは、「例えば、この文字列では、

を」\のu00f1" で何かを復帰「Nで何かを」nullを返しませんが、そして、もし私は、Zendで、このオプションを使用しようとしました私は、例えば、json_encodeのために使用します。

<? 
$string = "something with ñ"; 
echo "<pre>"; 
print_r($string); 
$encode_json = json_encode($string) ; 
print_r($encode_json); 
?> 

リターンは同じである:N

何か0

something with \ u00f1

utf8_enconde()を使用する場合は、この文字\ u00c3をñに戻します。

私の問題を解決するためのいくつかのアイデア?私はñでリストの単語でデータベースに保存する必要があります、私は別の特殊文字を保存することができれば素晴らしいでしょう。

答えて

0

\u00f1の部分は、Unicodeコードポイント00F1: "チルダ付き小文字n"を参照しています。

JSONは、ñと同じことを意味すると解釈しています。

+0

PHP 5.4にのみ使用可能で、どのようにiがnにこの文字を悪く言うことができますか?この言葉はデータベースにあり、私はこのような配列、二次元配列などの異なるフォーマットでこれを調べなければなりません。 – user1252306

+0

すべてのJSONデコーダは '\ u00f1'を正直な善良な'ñ'文字に変換します。あなたのサンプルコードでは、生成されたJSONを 'json_decode'で実行すると'ñ'が返されます。 –

2

あなたは

echo json_encode($yourdata, JSON_UNESCAPED_UNICODE); 

同様json_encode()関数を使用してUnicode文字をエンコードすることができます注:これ以降

+0

私はhtmlentities($ string、NULL、 'UTF-8')を使いました。簡単な文字列でそれは働いた。もっと複雑なものを試し、結果をここに投稿します。 – user1252306