GSON pas d'envoi en UTF-8
La méthode suivante envoie une réponse JSON. Toutefois, sur la fin de réception je reçois des caractères non valides, et UTF-8 n'est pas le décodage des données. Ce que je fais mal?
Réponse au client = données de sortie du flux
//Get the client request
clientRequest = new BufferedReader(new InputStreamReader(connectedClient.getInputStream())); //connectedclient = socket
//Start response object
responseToClient = new DataOutputStream(connectedClient.getOutputStream());
/**
* Sends a JSON response for an object
* @param objectToEncode
* @throws Exception
*/
private void sendJSONResponse(Object objectToEncode) throws Exception{
//Encode object into JSON
String jsonString = new Gson().toJson(objectToEncode);
//HTTP Header... Status code, last modified
responseToClient.writeBytes(HTTP_OK_STATUS_CODE);
responseToClient.writeBytes(CONTENT_TYPE_JSON);
responseToClient.writeBytes("Last-modified: "+ HelperMethods.now() +" \r\n");
responseToClient.writeBytes("\r\n");
//The HTTP content starts here
responseToClient.writeBytes(jsonString);
}
Qu'est-ce que
OUI. LE code HTTP est répertorié (également responseToClient est un DataOutputStream
J'ai objet ArrayList qui contient de nombreux Caractères Chinois et Japonais, Comment puis-je sérialiser eux à l'aide de GSON de la bibliothèque, par habitude dire que je lâche ces personnages et obtenir ? au lieu d'eux.
Le problème n'est pas dans
responseToClient
? Êtes-vous d'écrire votre code HTTP de vous-même?OUI. LE code HTTP est répertorié (également responseToClient est un DataOutputStream
J'ai objet ArrayList qui contient de nombreux Caractères Chinois et Japonais, Comment puis-je sérialiser eux à l'aide de GSON de la bibliothèque, par habitude dire que je lâche ces personnages et obtenir ? au lieu d'eux.
Le problème n'est pas dans
GSON
. Le problème est le codage octet de votre chaîne. Vous devez mentionner le utf-8
d'encodage lors de la conversion de votre chaîne de caractères dans le tableau d'octets que vous êtes enfin l'envoi d'une réponse
OriginalL'auteur William Falcon | 2013-06-13
Vous devez vous connecter pour publier un commentaire.
Je n'ai aucune idée de pourquoi vous voulez écrire votre propre protocole HTTP code. C'est un peu comme l'écriture de votre propre analyseur XML: N'importe comment bon un programmeur, vous êtes, vous êtes lié pour obtenir ce mal.
De toute façon, comme le DataOutputStream états de documentation, de faire
writeBytes
sur une Chaîne de simplement jeter le haut de huit bits. Donc, ce que vous obtenez est... quelque chose, mais pas de l'utf-8. Ce que vous devez faire est:Le plus léger intégrable HTTP java solution serait Jetée, je pense. eclipse.org/jetty Vous pouvez trouver beaucoup de bons tutoriels ici: wiki.eclipse.org/Jetty/Tutorial
Merci. Qui a résolu le problème (le tableau d'octets)
J'ai objet ArrayList qui contient de nombreux Caractères Chinois et Japonais, Comment puis-je sérialiser eux à l'aide de GSON de la bibliothèque, par habitude dire que je lâche ces personnages et obtenir ? au lieu d'eux.
vous avez raison, il n'était pas Gson de la faute, Ce que j'ai fait a été de lire la feuille excel et a écrit des caractères Japonais depuis un fichier texte ensuite réalisé fichier texte ne supporte pas l'UTF-8 par défaut, j'ai donc écrit un .fichier json et j'ai eu les caractères Japonais correctement, désolé de vous déranger, mais a obtenu d'apprendre quelque chose de nouveau 🙂
OriginalL'auteur Jan Doerrenhaus
Utiliser le code suivant pour encoder
OriginalL'auteur Jithin U. Ahmed