我正在使用Java发送HTTP GET请求。请参见下面的代码。 当我解析响应时,德语“ Umlaute”(例如ß,ä,ü)只是垃圾字符。 我知道,这与字符集有关,但是我到底要做什么?
这是代码的一部分:
URL obj = new URL( urlAsString );
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
on.setRequestMethod( "GET" );
我是否必须设置特殊的请求属性或类似的属性?还是我必须以某种方式转换结果?
当我在Web浏览器的地址栏中输入“ urlAsString”时,我得到了理想的结果,并且所有“ Umlaute”都是正确的。
感谢您的任何提示! 托尔斯滕
答案 0 :(得分:1)
您必须在响应部分而不是请求部分中设置字符集,例如
...
<div class="row">
<div class="col-12">
<div class="jumbotron">
</div>
</div>
</div>
...
这部分必须正确,因为您说从浏览器进行测试时可以。
现在从客户端部分开始,即在Java程序中,您还必须设置标头Content-Type: text/html; charset=utf-8
,该标头向服务器指示可以接受的字符集。例如对于utf-8,然后是iso-8859-1,您可以添加以下标头:
Accept-Charset
如果它不起作用,您还可以尝试通过指定字符集(例如:
)从连接中读取字节Accept-Charset: utf-8, iso-8859-1;q=0.5
也许是问题所在,但您没有在发布的代码中显示此部分。
答案 1 :(得分:0)
您可以在下面尝试这样吗?在这里,您可以设置utf-8的内容类型和字符集编码。
URL obj = new URL( urlAsString );
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestProperty("Content-Type", "text/plain; charset=utf-8");
on.setRequestMethod( "GET" );
我建议使用Apache Http Client以获得更好的用法和灵活性。