RestSharp,spring boot和JSON.org编码问题

时间:2014-12-30 05:07:04

标签: java c# json spring

我有一个c#桌面客户端,它读取本地数据库并将值上传到Web应用程序中。

在c#方面我使用的是RestSharp和Json.net。

private static void DBUpdater()
{
        var client = new RestClient();            
        client.BaseUrl = BASE_URL;
        string json = JsonConvert.SerializeObject(modelo.getComunidades(), Formatting.Indented);
        Console.WriteLine(json);
        var request = new RestRequest("/nuevascomunidades", Method.POST);
        request.RequestFormat = DataFormat.Json;
        request.AddParameter("comunidades", json);
        Console.WriteLine(client.Execute(request).ResponseStatus);

        Console.ReadKey();
}

当我通过控制台打印出生成的json字符串时,所有字符都能很好地表示出来。

但是,当我从spring boot / spring数据中获取值时,任何特殊字符都表示完全错误。

在服务器端,我正在反序列化这样的usng json.org:

@RequestMapping(value = "/nuevascomunidades", method = RequestMethod.POST)
public void nuevasComunidades(@RequestParam(value = "comunidades") String comunidades) {

    logger.debug("@@@@@@Entra en /nuevascomunidades");
    JSONArray entrada = new JSONArray(comunidades);
    JSONObject aux;
    Comunidad comunidad;
    int top = entrada.length();

    for (int i = 0; i < top; i++) {

        aux = entrada.getJSONObject(i);
        comunidad = new Comunidad(Integer.valueOf(aux.getString("Numero")),
                aux.getString("Nif"),
                aux.getString("Nombre"),
                aux.getString("Direccion"),
                aux.getString("Cod_postal"),
                aux.getString("Poblacion"),
                aux.getString("Provincia"),
                aux.getString("Pais"),
                aux.getBoolean("Baja"));

        comunidadRepositorio.save(comunidad);
        logger.debug("@@@@@@Comunidad añadida: " + comunidad.toString());
    }
}

有关如何修复编码的想法吗?

提前致谢。

正确的陈述:“Pais”:“ESPAÑA@ºª¡???!”

错误的陈述:pais ='ESPA├?A @┬║┬¬┬í┬┐?!'

编辑:

我刚刚在application.properties中添加了这些设置而没有任何成功:

# HTTP encoding (HttpEncodingProperties)
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true

1 个答案:

答案 0 :(得分:0)

最后我遇到了问题。

基本上它与Tomcat 8设置有关。 你可以在这里阅读更多内容:

http://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q3