example enum convertir charset java character-encoding

java - enum - MultipartEntityBuilder y Charset



enum encoding java (5)

Actualicé mi paquete httpmime y ahora mis cadenas no se envían ni se reciben como 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..

¿Qué me estoy perdiendo? Solía ​​crear un StringBody y establecer el conjunto de caracteres en el cuerpo de cadena, pero ahora está en desuso, y parece que no funciona.


En mi caso, configuro el contentType primero como este

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

y al agregar pares, especifique el tipo de contenido como este

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

como se responde aquí, MultipartEntityBuilder y setCharset para UTF-8 envían contenido vacío


Para aquellos que dicen que la solución aceptada no funcionó para ellos (tampoco lo fue para mí), la resolví de una manera diferente, usando:

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


Por favor intente esto para

Utf-8:

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


Resuelto: resulta que ContentType ahora es importante, y estaba enviando un texto que era sencillo, y también un texto que era JSON,

Para el texto plano, puede utilizar:

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

y para JSON:

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

de esa manera, el conjunto de caracteres también funciona en cadenas JSON (extraño, pero ahora está bien)


entity.addTextBody("plain_text", plain_text);

utilizará el ContentType.TEXT_PLAIN predeterminado que tiene este aspecto ...

public static final ContentType TEXT_PLAIN = ContentType.create("text/plain", Consts.ISO_8859_1);

mientras que ContentType.APPLICATION_JSON utiliza UTF-8 como se muestra a continuación

public static final ContentType APPLICATION_JSON = ContentType.create("application/json", Consts.UTF_8);

Entonces, lo que hice fue crear nuestro propio ContentType como este ...

entity.addTextBody("plain_text", plain_text, ContentType.create("text/plain", MIME.UTF8_CHARSET));