6

私はこれに日曜日の半分を費やしましたが、今は助けが必要です:

Java HttpURLConnection を使用して、UTF-8 でエンコードされた特殊な文字を含む文字列をサーバーに送信したいと考えています。文字の正しいエンコードは失敗します。

例:

strToSend: ä ù €
strUrlEncoded: %C3%A4+%C3%B9+%E2%82%AC
strReceived:㤠ù â¬

私のコード:

        urlConnection = (HttpURLConnection) new URL("http://localhost:8080/NetworkingServer/ServerServlet").openConnection();
        urlConnection.setUseCaches(false);
        urlConnection.setDoOutput(true); // Triggers POST.
        urlConnection.setRequestProperty("accept-charset", "UTF-8");
        urlConnection.setRequestProperty("content-type", "application/x-www-form-urlencoded");

        String strToSend = "ä ù €";
        System.out.println("strToSend: " + strToSend);
        String strUrlEncoded = URLEncoder.encode(strToSend, "UTF-8");
        System.out.println("strUrlEncoded: " + strUrlEncoded);

        OutputStreamWriter writer = new OutputStreamWriter(urlConnection.getOutputStream(), "UTF-8");
        writer.write(String.format("content=%s", strUrlEncoded));
        writer.close();

何か案は?

4

1 に答える 1

9

Content-Typeヘッダーにエンコーディングを設定する必要があります。

" " に設定しapplication/x-www-form-urlencoded; charset=utf-8ます。現在、設定するのはaccept-charset- のみです。これは、何を送り返すかをサーバーに伝えます。

于 2013-04-07T17:50:33.290 に答える