[ https://issues.apache.org/jira/browse/GEODE-9104?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17311707#comment-17311707 ]
Barrett Oglesby commented on GEODE-9104: ---------------------------------------- The query executes this code path: {noformat} java.lang.Exception at org.apache.geode.rest.internal.web.util.JSONUtils.enableDisableJSONGeneratorFeature(JSONUtils.java:57) at org.apache.geode.rest.internal.web.util.JSONUtils.convertCollectionToJson(JSONUtils.java:141) at org.apache.geode.rest.internal.web.controllers.AbstractBaseController.processQueryResponse(AbstractBaseController.java:243) at org.apache.geode.rest.internal.web.controllers.QueryAccessController.runNamedQuery(QueryAccessController.java:262) {noformat} JSONUtils creates a JsonGenerator like: {noformat} getObjectMapper().getFactory().createGenerator((OutputStream) outputStream, JsonEncoding.UTF8) {noformat} It then enables the ESCAPE_NON_ASCII feature: {noformat} generator.enable(JsonWriteFeature.ESCAPE_NON_ASCII.mappedFeature()); {noformat} This is what causes the Chinese characters to be escaped. The get creates a RegionData in this code path: {noformat} java.lang.Exception: RegionData.RegionData at org.apache.geode.rest.internal.web.controllers.support.RegionData.<init>(RegionData.java:59) at org.apache.geode.rest.internal.web.controllers.support.RegionEntryData.<init>(RegionEntryData.java:48) at org.apache.geode.rest.internal.web.controllers.PdxBasedCrudController.getRegionKeys(PdxBasedCrudController.java:260) at org.apache.geode.rest.internal.web.controllers.PdxBasedCrudController.read(PdxBasedCrudController.java:243) {noformat} The RegionData is serialized here: {noformat} java.lang.Exception: RegionData.serialize at org.apache.geode.rest.internal.web.controllers.support.RegionData.serialize(RegionData.java:131) at com.fasterxml.jackson.databind.ser.std.SerializableSerializer.serialize(SerializableSerializer.java:39) at com.fasterxml.jackson.databind.ser.std.SerializableSerializer.serialize(SerializableSerializer.java:20) at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480) at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:319) at com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1514) at com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:1006) at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java:454) at org.springframework.http.converter.AbstractGenericHttpMessageConverter.write(AbstractGenericHttpMessageConverter.java:104) {noformat} AbstractJackson2HttpMessageConverter.writeInternal creates a JsonGenerator like this: {noformat} objectMapper.getFactory().createGenerator(outputStream, encoding) {noformat} This is the same as JSONUtils. The ESCAPE_NON_ASCII is not enabled in this case, though. > REST query output displays non-ASCII characters using escapes > ------------------------------------------------------------- > > Key: GEODE-9104 > URL: https://issues.apache.org/jira/browse/GEODE-9104 > Project: Geode > Issue Type: Bug > Components: rest (dev) > Reporter: Barrett Oglesby > Assignee: Barrett Oglesby > Priority: Major > > For example, if JSON containing Chinese characters is put: > {noformat} > curl -X PUT -H "Content-Type: application/json" > localhost:8081/geode/v1/customers/1 -d '{"id": "1", "firstName": "名", > "lastName": "姓"}' > {noformat} > The results of getting the entry are correct: > {noformat} > curl localhost:8081/geode/v1/customers/1 > { > "id" : "1", > "firstName" : "名", > "lastName" : "姓" > } > {noformat} > The results of querying the entry show the field values escaped: > {noformat} > curl -G http://localhost:8081/gemfire-api/v1/queries/adhoc --data-urlencode > "q=SELECT * FROM /customers where id='1'" > [ { > "id" : "1", > "firstName" : "\u540D", > "lastName" : "\u59D3" > } ] > {noformat} -- This message was sent by Atlassian Jira (v8.3.4#803005)