0

restler PHP API を使用して REST サービスをホストしています。一部のヨーロッパ文字の処理に問題がありますが、それ以外は問題なく動作しています。

たとえば、MySQL データベースに「Český rozhlas 1 - Radiožurnál」という文字列があります。restler API がデータを JSON に変換すると、「?esk\u00fd rozhlas 1 - Radio\u009eurn\u00e1l」のように変換されます。

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

restler PHP サービスを使用してデータを適切に変換するにはどうすればよいですか?

4

1 に答える 1

1

Unicode を扱うときは、常に utf-8 を使用する必要があります

まず、MySQL データベースが utf-8 エンコーディングを使用していることを確認する必要があります。次のSQLを実行して、それを確認できます

ALTER TABLE your_table_name_here CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

次に、PHP と通信するときに MySQL が utf-8 を吐き出すようにする必要があります。

次のコマンドを使用できます

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

PDO を使用している場合は、データベースに接続するために、代わりに以下を使用する必要があります。

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

これらの変更後、レスラーの結果は次のようになります。

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

これは、Unicode エスケープ シーケンスを使用して Unicode 文字がエスケープされた完全なデータを含む有効な JSON です。

于 2012-05-11T18:44:23.990 に答える