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

ここで回答したように、UTF-8 の MultipartEntityBuilder と setCharset は空のコンテンツを送信します

于 2014-08-17T21:10:32.030 に答える