Подтвердить что ты не робот

MultipartEntityBuilder и Charset

Я обновил свой пакет 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, но теперь это устарело, и он просто не работает

4b9b3361

Ответ 1

Решил это:) Оказывается, ContentType теперь важен, и я отправлял текст, который был простым, а также некоторый текст, который был JSON,

для обычного текста, вы можете использовать:

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

и для JSON:

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

таким образом кодировка также работает на строках JSON (странно, но теперь ОК)

Ответ 2

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));

Ответ 3

Для тех, кто говорит, что принятое решение не сработало для них (это тоже не для меня), я решил это по-другому, используя:

builder.addTextBody(key, שלום, ContentType.TEXT_PLAIN.withCharset("UTF-8"));

Ответ 4

Пожалуйста, попробуйте это для

UTF-8:

entity.addTextBody("your text", stringBuffer.toString(), ContentType.create("text/plain", Charset.forName("UTF-8")));