web-dev-qa-db-fra.com

Encodage de caractères dans POST JSON Request

J'envoie une POST JSON Request à mon application.

POST /CharSetTest/Test HTTP/1.1
Host: localhost:8090
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: 1637b92b-5896-4765-63c5-d04ad73ea9f1

{
  "SampleRequest": {
    "FullName": "関連当"
  }
}

Mon consommateur CXF JAXRS est défini comme ci-dessous.

@POST
@Produces("application/json; charset=UTF-8")
@Consumes("application/json; charset=UTF-8")
public Response testCharSet(@Encoded String jsonBody);

Mais le caractère japonais (関 連 当) que j'ai envoyé en tant que POST n'est pas codé et entraîne des caractères indésirables "é ¢ é £ å½äºè"

L'utilisation de SoapUI donne "?????" personnages.

Ce caractère indésirable diffère d'un client à l'autre d'où j'ai frappé la demande. Comment pourrais-je encoder ma POST demande?

10
Elite209

Définissez le type de contenu sur:

"application/json;charset=UTF-8" 

lors de l'envoi de la demande de publication dans l'application que vous utilisez. Vous pouvez trouver "content-type" dans l'en-tête de l'URL de cette application.

10
Rajat

Aucune des réponses ici n'a fonctionné pour moi.

Mon type de contenu était déjà défini sur "application/json; charset = UTF-8", mais le accept-encoding le réglage dans mon en-tête était à l'origine de l'erreur:

Désactivez le accept-encoding paramètre sous En-têtes:

enter image description here

Lorsque j'ai désactivé la dernière ligne ci-dessus, tout a bien fonctionné! J'espère que cela aide quelqu'un.

3
Matt

Essaye ça

@RequestMapping(value = "/play", method = RequestMethod.POST, produces={"application/json; charset=UTF-8"})

Ensemble produces={"application/json; charset=UTF-8"} comme ci-dessus, à votre @RequestMapping

0
Sineth Lakshitha