2012-07-02 205 views
0

我想從機器人發送POST請求到PHP應用程序以UTF-8與下面的代碼:POST請求到PHP

List<NameValuePair> params = new ArrayList<NameValuePair>(); 
params.add(new BasicNameValuePair(Site.SQL_QUERY, "just a test 東京")); 

UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(params); 
urlEncodedFormEntity.setContentEncoding(HTTP.UTF_8); 
httppost.setEntity(urlEncodedFormEntity); 

HttpResponse response = httpclient.execute(httppost); 
BufferedReader reader = new BufferedReader(new inputStreamReader(response.getEntity().getContent(), HTTP.UTF_8)); 
String result = reader.readLine(); 

餘集編碼爲UTF-8,但包含日文字符在字符串中不能正常顯示。

這是我的PHP代碼(cakePHP)。我只是轉儲參數。

function sqlQuery(){ 
    var_dump($this->params['form']['sql_query']);exit; 
} 

它會顯示類似 「只是一個測試□□」

我也試圖與

mb_convert_encoding ($this->params['form']['sql_query'],"UTF-8") 

但問題仍然存在...

有人能幫助我嗎? 謝謝

+0

我找到了解決方案! \t UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(params,HTTP.UTF_8); \t urlEncodedFormEntity.setContentEncoding(HTTP.UTF_8); \t httppost.setEntity(urlEncodedFormEntity); – johann

+0

你使用的是什麼cakephp版本?在2.x其'$ this-> request-> data' – mark

回答

3

這一直是從Android發送UTF-8數據的問題。您的代碼可以正常工作,但您必須將String編碼爲Base64。在服務器PHP中,您只需將Base64字符串解碼回來。它爲我工作。如果您需要代碼,我可以分享。

+1

我已經在Base64中編碼了我的參數,現在它可以工作〜謝謝 – johann

+0

很高興知道 –