简体   繁体   English

通过HttpURLConnection发送UTF-8字符失败

[英]Send UTF-8 chars via HttpURLConnection failing

I have spent half Sunday on this now I need help: 我现在已经花了一半星期天,我现在需要帮助:

I want to send a String including special chars UTF-8 encoded to a server using Java HttpURLConnection. 我想使用Java HttpURLConnection将包含特殊字符UTF-8编码的字符串发送到服务器。 The correct encoding of the chars fails. 字符的正确编码失败。

Example: 例:

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

My code: 我的代码:

        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();

Any ideas? 有任何想法吗?

You need to set the encoding in your Content-Type header. 您需要在Content-Type标头中设置编码。

Set it to " application/x-www-form-urlencoded; charset=utf-8 ". 将其设置为“ application/x-www-form-urlencoded; charset=utf-8 ”。 Currently you only set the accept-charset - this tells the server what to send back. 目前你只设置了accept-charset - 这告诉服务器要发回什么。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM