4

Android アプリケーション内で HTTP ポストを作成しました。値は、アプリから Web サーバーに文字列として送信されます。問題は、値が希望どおりに UTF-8 ではないことです。私の Web サーバーは UTF-8 エンコーディングを使用しているため、アプリ内に変更が必要なコードがあることがわかっています。以下のスニペットを参照してください。

private void sendPostRequest(String facebookId, String name, String email) {

        class SendPostReqAsyncTask extends AsyncTask<String, Void, String>{

            @Override
            protected String doInBackground(String... bcs) {

                String bcFacebookId = bcs[0];
                String bcName = bcs[1];
                String bcEmail = bcs[2];



                HttpClient httpClient = new DefaultHttpClient();

                HttpPost httpPost = new HttpPost("URL");

                BasicNameValuePair facebookIdBasicNameValuePair = new BasicNameValuePair("bcFacebookId", bcFacebookId);
                BasicNameValuePair nameBasicNameValuePair = new BasicNameValuePair("bcName", bcName);
                BasicNameValuePair emailBasicNameValiePair = new BasicNameValuePair("bcEmail", bcEmail);

                List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();
                nameValuePairList.add(facebookIdBasicNameValuePair);
                nameValuePairList.add(nameBasicNameValuePair);
                nameValuePairList.add(emailBasicNameValiePair);
                try {

                    UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(nameValuePairList);

                    httpPost.setEntity(urlEncodedFormEntity);

                    try {
                        HttpResponse httpResponse = httpClient.execute(httpPost);

                        InputStream inputStream = httpResponse.getEntity().getContent();

                        InputStreamReader inputStreamReader = new InputStreamReader(inputStream);

                        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

                        StringBuilder stringBuilder = new StringBuilder();

                        String bufferedStrChunk = null;

                        while((bufferedStrChunk = bufferedReader.readLine()) != null){
                            stringBuilder.append(bufferedStrChunk);
                        }

                        return stringBuilder.toString();

                    } catch (ClientProtocolException cpe) {

                        cpe.printStackTrace();
                    } catch (IOException ioe) {
                        System.out.println("Second Exception caz of HttpResponse :" + ioe);
                        ioe.printStackTrace();
                    }

                } catch (UnsupportedEncodingException uee) {
                    System.out.println("An Exception given because of UrlEncodedFormEntity argument :" + uee);
                    uee.printStackTrace();
                }

                return null;
            }

たとえば、文字「ö」は「?」になります。これを修正するにはどうすればよいですか? 乾杯!

4

2 に答える 2

0

データベースのコーディングが適切に設定され、テーブルのコーディングが適切に設定され、列のコーディングが適切に設定されている場合、すべてのデータが適切に保存されます。それが最初の部分です。2 番目の重要な部分 - mysql 接続の後に次のコマンドがあることを確認してください: SET NAMES utf8

これは、同じ問題の私の場合でした。これがあなたにとってもうまくいくことを願っています。

于 2014-12-22T20:39:36.943 に答える