我升级了httpmime包,现在我的字符串不再以UTF-8格式发送或接收
MultipartEntityBuilder entity = MultipartEntityBuilder.create();
Charset chars = Charset.forName("UTF-8");
entity.setCharset(chars);
entity.addTextBody("some_text", some_text);
HttpPost httppost = new HttpPost(url);
httppost.setEntity(entity.build());
...and so on..
我遗漏了什么?我过去常常构建一个stringbody并在字符串体中设置字符集,但现在不推荐这样做了,而且它似乎不起作用
发布于 2013-10-10 19:21:56
解决了这个问题:)事实证明ContentType现在很重要,我发送的文本是纯文本,还有一些文本是JSON,
对于纯文本,您可以使用:
entity.addTextBody("plain_text",plain_text,ContentType.TEXT_PLAIN);
对于JSON:
entity.addTextBody("json_text",json_text,ContentType.APPLICATION_JSON);
这样,字符集也可以在JSON字符串上工作(很奇怪,但现在可以了)
发布于 2014-01-09 20:34:59
entity.addTextBody("plain_text", plain_text);
将使用默认的ContentType.TEXT_PLAIN,如下所示...
public static final ContentType TEXT_PLAIN = ContentType.create("text/plain", Consts.ISO_8859_1);
而ContentType.APPLICATION_JSON正在使用UTF-8,如下所示
public static final ContentType APPLICATION_JSON = ContentType.create("application/json", Consts.UTF_8);
所以我所做的就是像这样创建我们自己的ContentType。
entity.addTextBody("plain_text", plain_text, ContentType.create("text/plain", MIME.UTF8_CHARSET));
发布于 2016-10-07 22:25:37
对于那些说公认的解决方案对他们不起作用(对我也不起作用)的人,我用一种不同的方式解决了这个问题,使用:
builder.addTextBody(key, שלום, ContentType.TEXT_PLAIN.withCharset("UTF-8"));
https://stackoverflow.com/questions/19292169
复制相似问题