如何在 Apache HTTP 组件中设置字符编码?
我做这样的事情:
Form form = Form.form();
form = form.add("somekey", "somevalue");
Request request = Request.Post("http://somehost/some-form")
.request.bodyForm(form.build());
"somekey"和 "somevalue"是 unicode 字符串,因为所有 java 字符串都是 unicode。 http 组件在我测试时将它们转换为 latin-1。我希望它能转换成其他格式(例如 utf-8)。
最佳答案
根据您在示例中展示的内容,您似乎正在使用流畅的 API。
调查 javadocs request.bodyForm()
有一个接受字符集的版本:
import org.apache.http.Consts;
...
request = request.bodyForm(form.build(), Consts.UTF_8);
根据source ,字符集默认为 Consts.ISO_8859_1
(又名 Latin-1)。
备选方案
如果这不起作用,请考虑:
import org.apache.http.Consts; ... request.elementCharset(Consts.UTF_8);
作为最后的手段,应该可以设置内容字符集。看着 source for
elementCharset()
,您可以尝试以下操作:import org.apache.http.Consts; import org.apache.http.params.CoreProtocolPNames; ... request.config(CoreProtocolPNames.HTTP_CONTENT_CHARSET, Consts.UTF_8);
关于java - 如何在 Apache HTTP 组件中设置编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14490591/