android应用程序无法使用utf8

时间:2013-07-20 08:02:55

标签: php android utf-8

我不确定问题是PHP或Android应用程序,但我发送一个带有数据的HttpPost只得到???插入我的数据库表。我在PHP中做了以下内容:

     $db_con = mysql_connect($db_host,$db_uid,$db_pass) or die('could not connect');
     mysql_query("SET NAMES utf8;");
     mysql_query("SET CHARACTER_SET utf8;");

然后在android中我做了以下事情:

           String postReceiverUrl = "http://hwy.com/displaypost.php";
        HttpParams params = new BasicHttpParams();
        HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
        HttpProtocolParams.setContentCharset(params, "utf-8");
        // HttpClient
        HttpClient httpClient = new DefaultHttpClient(params);

        // post header
        HttpPost httpPost = new HttpPost(postReceiverUrl);

        // add your data
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);

        //All user input
        EditText shopName = (EditText)findViewById(R.id.shopName);
        EditText shopLocation = (EditText)findViewById(R.id.shopLocation);
        EditText shopCity = (EditText)findViewById(R.id.shopCity);
        EditText discountRate = (EditText)findViewById(R.id.shopDiscount);
        EditText discountDuration = (EditText)findViewById(R.id.shopDiscountDuration);

        nameValuePairs.add(new BasicNameValuePair("name", shopName.getText().toString()));
        nameValuePairs.add(new BasicNameValuePair("location", shopLocation.getText().toString()));
        nameValuePairs.add(new BasicNameValuePair("city", shopCity.getText().toString()));
        nameValuePairs.add(new BasicNameValuePair("rate", discountRate.getText().toString()));
        nameValuePairs.add(new BasicNameValuePair("duration", discountDuration.getText().toString()));
        nameValuePairs.add(new BasicNameValuePair("category", shopCategory));

        httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        // execute HTTP post request

        HttpResponse response = httpClient.execute(httpPost);
        HttpEntity resEntity = response.getEntity();

        if (resEntity != null) {

            String responseStr = EntityUtils.toString(resEntity).trim();
            Log.v("", "Response: " +  responseStr);

            // you can add an if statement here and do other actions based on the response
        }

我在logcat中收到的回复是:

07-20 10:52:56.996: V/(7749): Response: Array
07-20 10:52:56.996: V/(7749): (
07-20 10:52:56.996: V/(7749):     [name] => ???????
07-20 10:52:56.996: V/(7749):     [location] => ???????
07-20 10:52:56.996: V/(7749):     [city] => ???????
07-20 10:52:56.996: V/(7749):     [rate] => ???????
07-20 10:52:56.996: V/(7749):     [duration] => ??????
07-20 10:52:56.996: V/(7749):     [category] => ????? ? ?????????
07-20 10:52:56.996: V/(7749): )

知道为什么会分手吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

经过长时间的研究和实验,找到了答案。就是这样:

 httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");

接下来是:

    httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs,"UTF-8"));

这就是它的全部!希望有一天能帮到某人