2012-07-02 175 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

很高兴知道 –