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

我现在已经花了一半星期天,我需要帮助:

我想使用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(); 

有任何想法吗?

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

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