java - GsonBuilder toJSon () er ikke kodende for ikke-engelsk tegn korrekt

Indlæg af Hanne Mølgaard Plasc

Problem



Tegnene i indholdet modtages som nedenfor af serveren. Når jeg kører den samme kode på Mac OSX, går det som forventet, men når det samme program køres på en Windows-maskine, får jeg denne adfærd, der er ikke noget problem med serverkode, fordi når jeg kalder dette API fra Postman og passerer disse tegn bliver de modtaget korrekt af serveren. Det ser ud til GsonBuilder har noget problem med behandling af ikke-engelske tegn. Jeg står over for dette problem med få andre sprog også.



  Εισιτή? Ια



        private String content =  "Εισιτήρια";

        public String post(String targetEnvironment) throws IOException{

        String gson = new GsonBuilder().disableHtmlEscaping().excludeFieldsWithModifiers(java.lang.reflect.Modifier.TRANSIENT).setLenient().create().toJson(this).toString();
            System.out.println(gson);
            OkHttpClient client = new OkHttpClient();

            MediaType JSON = MediaType.parse("application/json; charset=utf-8");
            RequestBody body = RequestBody.create(JSON, gson);
            Request request = new Request.Builder()
              .url(targetEnvironment)
              .post(body)
              .addHeader("content-type", "application/json; charset=utf-8")
              .addHeader("accept", "application/json")
              .addHeader("client\_application\_id", "1")
              .addHeader("x-requested-with", "1")
              .addHeader("user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10\_11\_5)")
              .addHeader("accept-encoding", "gzip,deflate,br")
              .addHeader("cache-control", "no-cache")
              .build();

            Response response = client.newCall(request).execute();

            String response\_string = response.body().string();
            System.out.println(response\_string);
         }

Bedste reference