2012-01-22 25 views
8

đây là mã mẫu của tôi, tuy nhiên tôi đã sử dụng HttpProtocolParams.setContentCharset (params, "utf-8"); im mã của tôi nhưng khi tôi gửi dữ liệu utf-8, tôi chỉ nhận được "?????" ở phía máy chủ (mã PHP)! vấn đề là gìGửi nội dung utf8 bằng phương thức đăng lên máy chủ trong android bằng cách sử dụng HttpClient

HttpParams params = new BasicHttpParams(); 
    HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); 
    HttpProtocolParams.setContentCharset(params, "utf-8"); 

    HttpClient httpclient = new DefaultHttpClient(params); 

    httpclient.getParams().setParameter("http.protocol.content-charset", "UTF-8"); 
    HttpPost httppost = new HttpPost("URL_TO_SERVER"); 

    try { 

     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
     nameValuePairs.add(new BasicNameValuePair("uname", name.getText().toString())); 
     nameValuePairs.add(new BasicNameValuePair("uemail", email.getText().toString())); 
     nameValuePairs.add(new BasicNameValuePair("udesc", body.getText().toString())); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

     HttpResponse hresponse = httpclient.execute(httppost); 

     String response = new Scanner(hresponse.getEntity().getContent(), "UTF-8").useDelimiter("\\A").next(); 

     hresponse.getEntity().consumeContent(); 
     httpclient.getConnectionManager().shutdown(); 

     Log.d("WX", response.toString()); 
     Toast.makeText(getApplicationContext(), response, Toast.LENGTH_LONG).show(); 

    } catch (ClientProtocolException e) { 
     // TODO Auto-generated catch block 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
    } 

Trả lời

23

Có lẽ bạn nên sử dụng UTF-8 cho các thực thể:

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs,"UTF-8")); 
+1

cảm ơn, mà đã làm các trick :) –

3

Tôi đã làm việc

public static String sendData(String data) { 
    String str = null; 
    HttpClient client = new DefaultHttpClient(); 
    HttpPost httppost = new HttpPost(serverurl); 
    try { 
     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1); 
     nameValuePairs.add(new BasicNameValuePair("s", data)); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
     HttpResponse response = client.execute(httppost); 
     str = new Scanner(response.getEntity().getContent(), "UTF-8").useDelimiter("\\A").next(); 

     Log.v("srv response:", str); 
    } catch (SecurityException e) { 
     str = "err2"; 
    } catch (IOException error) { 
     str = "err1.1"; 
    } catch (NullPointerException e) { 
     str = "err1.2"; 
    } 
    return str; 
} 
Các vấn đề liên quan