我編寫了一個Android應用程序,用於管理要在MySQL數據庫(在服務器上)存儲和刪除的數據。每當在智能手機上使用特殊字符(「ä」,「ü」,...)時,該符號將被嚴重轉換。Android,JSon和PHP之間的UTF-8編碼問題
在日誌中,我可以看到「變音符號」(例如「ä」)被正確傳送。我在PHP文件「SET NAMES‘UTF-8’」也使用,在這裏看到:
function connect()
{
....
// Connecting to mysql database
$con = mysql_connect(DB_SERVER, DB_USER, DB_PASSWORD) or die(mysql_error());
mysql_query("SET NAMES 'utf8'");
// Selecting database
$db = mysql_select_db(DB_DATABASE) or die(mysql_error()) or die(mysql_error());
return $con;
}
如果我開始通過郵差的請求,我可以用特殊的字符,例如添加單詞「TÄST」,json響應如下所示:
{"catId":"35","category":"T\u00c4ST"}
因此,單詞已轉換爲UTF-8。但是,如果我通過智能手機添加一個項目,從服務器的響應(檢索添加的項目)是這樣的:
{"catId":"37","category":"T?ST"}
在我的代碼,在這裏我想補充的參數爲JSON對象的位置是(注意,「名」是編輯文本字段的字符串內容):
List<NameValuePair> params = new ArrayList<NameValuePair>();
...
params.add(new BasicNameValuePair("category", catName));
,此前的HTTPRequest是派:
JSONObject json = jsonParser.makeHttpRequest(url_dest, "POST", params);
如果我打印出來的PARAMS單詞「TAST」可見......布不幸的是,我無法檢查哪個json字符串到達服務器(由於我的PHP知識欠佳)。那麼問題在哪裏?在我的android應用程序或位於服務器上的PHP文件?
我是否必須以任何方式對傳出的json對象進行編碼?
非常感謝您的幫助。
非常感謝提示!但不幸的是我的PHP文件運行在遠程服務器(bplaced.net)上,是否可以在那裏調試?我沒有這方面的線索。 – dafocus
是的,但它有點複雜。您應該遠程安裝xdebug並使用Eclipse PDT。 我認爲這是一個很好的指導: http://bogdan-albei.blogspot.it/2010/06/php-remote-debugging-with-xdebug-and.html – madx