2012-05-03 86 views
0

我正在使用restler PHP API來託管REST服務。我在處理一些歐洲字符時遇到問題,否則它工作正常。LURACAST Restler框架 - 處理歐洲字符的問題

例如我在MySQL數據庫中有字符串「Českýrozhlas 1 - Radiožurnál」。當restler API將數據轉換爲JSON時,它將被轉換爲這樣的「?esk \ u00fd rozhlas 1 - Radio \ u009eurn \ u00e1l」

這裏第一個字符被轉換爲問號。

如何使用restler PHP服務正確地轉換數據?

+0

嘗試'json_decode()'回來? – deex

回答

1

當使用Unicode處理,我們需要確保我們使用UTF-8,所有你需要確保MySQL數據庫使用UTF-8編碼的方式

第一。你可以運行下面的sql來確保:

ALTER TABLE your_table_name_here CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; 

接下來,你需要確保MySQL在與PHP交談時吐出utf-8。

你可以,如果你正在使用PDO使用以下命令

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

需要改用以下,用於連接到數據庫

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

這些更改後,restler結果應該成爲

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

哪一個是有效的JSON與完整的數據在unicode ch使用unicode轉義序列轉義字符。

+0

感謝您的回覆。添加以下語句後,我解決了此問題。 mysql_query(「set character_set_results ='utf8'」) – jpsasi