2017-03-01 1 views
0

J'ai donc un problème de codage de caractères lors de la réception de données provenant de restclient en utilisant restTemplate pour envoyer des données. et ceci mon exemple de code:Impossible de recevoir le format UTF-8 avec String dans LinkedHashMap lors de l'utilisation de RestTemplate

Ceci est mon code client; Je reçois déjà des données avec encodage UTF-8:

rest.getMessageConverters().add(0, new StringHttpMessageConverter(Charset.forName("UTF-8"))); 

Map<String,Object> params = new HashMap<String,Object>(); 
params.put("modelname","character without utf-8"); 
MyModel oldModel = rest.postForObject(MYMODEL_SERVICE_URI + "/get", params, MyModel.class);//it return perfect model with utf-8 encoded 
oldModel.setContent("Tôi muốn cập nhật model này với định dạng UTF-8"); 

MyModelWrapper wrapper = new MyModelWrapper(); 
wrapper.add(oldModel); 
params.put("newmodel", wrapper); 
Message message = rest.postForObject(MYMODEL_SERVICE_URI + "/update", params, Message.class);//class message contains the message back and the status of that message in boolean 
System.out.println(message); 

Ceci est mon code de service

@RequestMapping(value="/update", method=RequestMethod.POST) 
@ResponseBody 
public Message update(@RequestBody Map<String, Object> params){ 
    ..... 
    LinkedHashMap<String,Object> map = (LinkedHashMap<String,Object>params.get("newmodel"); 
    Iterator<String> iter = map.keySet().iterator(); 
    String key = ""; 
    while(iter.hasNext()){ 
     key = iter.next(); 
     System.out.println(map.get(key));//returned the string value is not in utf-8 format 
     //some method casting linkedhashmap to MyModel 
    } 

    .... 
    return message; 
} 

Et le message de retour de celui-ci n'est pas dans le codage utf-8. J'ai donc besoin d'aide sur l'encodage lors de la réception de l'objet depuis le client de repos.

Répondre

0

Ajouter consumes, produces à @RequestMapping avec application/json;charset=UTF-8 et voir

@RequestMapping(value="/update", method=RequestMethod.POST, consumes=MediaType.APPLICATION_JSON_UTF8, produces=MediaType.APPLICATION_JSON_UTF8) 
+0

Merci beaucoup, mais il est de ma faute. Mon code fonctionne parfaitement sans ajouter consomme, produit. J'essaie juste une autre méthode, et je vois toujours sur la console qu'il n'y a pas de caractère utf-8. mais quand je convertis le texte en byte [], c'est la même chose, donc j'essaie d'utiliser ce code de mise à jour, puis j'utilise get service pour obtenir cet Object, et je vois que la valeur est au format utf-8. Merci pour votre aide –