23

我升级了我的 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 并在 stringbody 中设置字符集,但现在已弃用,而且它似乎不起作用

4

5 回答 5

23

解决了 :) 事实证明 ContentType 现在很重要,我发送的是纯文本,还有一些 JSON 文本,

对于纯文本,您可以使用:

entity.addTextBody("plain_text",plain_text,ContentType.TEXT_PLAIN);

对于 JSON:

entity.addTextBody("json_text",json_text,ContentType.APPLICATION_JSON);

这样,字符集也适用于 JSON 字符串(很奇怪,但现在可以了)

于 2013-10-10T11:21:56.173 回答
20
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));
于 2014-01-09T12:34:58.630 回答
8

对于那些说接受的解决方案对他们不起作用(对我也不起作用)的人,我以不同的方式解决了它,使用:

builder.addTextBody(key, שלום, ContentType.TEXT_PLAIN.withCharset("UTF-8"));
于 2016-10-07T14:25:36.607 回答
2

请试试这个

UTF-8:

entity.addTextBody("your text", stringBuffer.toString(), ContentType.create("text/plain", Charset.forName("UTF-8")));
于 2015-03-12T11:33:23.697 回答
1

就我而言,我首先像这样设置 contentType

ContentType contentType = ContentType.create(
                        HTTP.PLAIN_TEXT_TYPE, HTTP.UTF_8);

并在添加对时,像这样指定内容类型

entityBuilder.addTextBody("title",pic.getTitle(),contentType);

如此处回答的MultipartEntityBuilder 和 UTF-8 的 setCharset 发送空内容

于 2014-08-17T21:10:32.030 回答