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

标签 java utf-8 httpurlconnection

我在这上面花了半个星期天,现在我需要帮助:

我想使用 Java HttpURLConnection 将包含 UTF-8 编码的特殊字符的字符串发送到服务器。字符的正确编码失败。

例子:

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

有什么想法吗?

最佳答案

您需要在 Content-Type header 中设置编码。

将其设置为“application/x-www-form-urlencoded; charset=utf-8”。目前你只设置了 accept-charset - 这告诉服务器要发回什么。

关于java - 通过 HttpURLConnection 发送 UTF-8 字符失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15865561/

相关文章:

html - 在 charset=utf-8 的 HTML 文件中,我还需要用 ä 替换变音符号吗?

Java简单代码: java.net.SocketException:来自服务器的文件意外结束

java - 如何使用 HttpURLConnection 通过登录下载文件

javascript - 如何在 JavaScript 中 chop UTF8 字符串而不破坏多字节字符?

java - 设置一个第三方 JAR 的类路径以包含另一个带有 Ant 的类路径

"split(regEx)"和 "split(regEx, 0)"之间的 Java 区别?

java - 正则表达式匹配组

java - IE 不支持中文和日文?

java - 使用 HttpURLConnection 发送二进制数据

java - 尝试使用 javacv 使用 ffmpeg 加载视频文件