2012-05-03 5 views
0

restrest PHP APIを使用してRESTサービスをホストしています。私はいくつかのヨーロッパの文字を扱う際に問題があります。それ以外の場合は正常に動作しています。LURACAST Restlerフレームワーク - ヨーロッパの文字を扱う際の問題

たとえば、私は文字列 "Českýrozhlas 1 - Radiožurnál"をMySQLデータベースに持っています。レスラーAPIがデータをJSONに変換すると、 "?esk \ u00fd rozhlas 1 - Radio \ u009eurn \ u00e1l"のように変換されます

ここで最初の文字は疑問符として変換されます。

レスリストPHPサービスを使用してデータを正しく変換するにはどうすればよいですか?ユニコードを扱う場合

+0

'json_decode()'を試しましたか? – deex

答えて

1

、我々はあなたがMySQLデータベースはUTF-8エンコーディングを使用していることを確認する必要があり、すべての方法

まずUTF-8を使用することを確認する必要があります。次のSQLを実行すると、そのことを確認できます

ALTER TABLE your_table_name_here CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; 

次に、PHPと話すときにMySQLがspf utf-8を吐くのを確認する必要があります。

あなたは、あなたがこれらの変更後

$db = new PDO(
      'mysql:host=localhost;dbname=data_pdo_mysql', 'username', 'password', 
      array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'") 
    ); 

データベースに接続するために、代わりに以下を使用する必要がPDOを使用している場合は、restler結果になるはずです

mysql_query('SET NAMES utf8'); 
mysql_query('SET CHARACTER SET utf8'); 

次のコマンドを使用することができます

"\u010cesk\u00fd rozhlas 1 - Radio\u017eurn\u00e1l" 

有効なJSONで、完全なデータで、ユニコードchユニコードエスケープシーケンスを使用してアトラクターがエスケープされます。

+0

お返事ありがとうございます。私は次のステートメントを追加してこの問題を解決しました。 mysql_query( "set character_set_results = 'utf8'") – jpsasi

関連する問題