allwefantasy / ServiceFramework

Java MVC framework, agile, fast, rich domain model, made especially for server side of mobile application (一个敏捷,快速,富领域模型的Java MVC 框架,专为 移动应用后端量身定做)
545 stars 255 forks source link

Emoji包含emoji表情的对象转化成json乱码 #49

Open kevinke2012 opened 8 years ago

kevinke2012 commented 8 years ago

这个框架最近使用了一下,发现个问题,如题,不知道咋解决,举个例子,该框架从数据库取出带emoji表情字段的对象,使用render转化返回给IOS客户端的时候,数据包乱码,导致IOS无法解析。 public void render(Object result) { restResponse.originContent(result); restResponse.write(toJson(result)); throw new RenderFinish(); } 之前使用springMVC的时候用的@ResponseBody注解是没有问题的,解析成json的动作SpringMVC代替了。也没有很多时间去研究他们的源码。 大神帮帮忙看一下

allwefantasy commented 8 years ago

和 @ ResponseBody 对等的是 render(200, 字符串对象, ViewType.string); 也就是我们渲染出去的就是原生的字符串。至于从数据库取出的对象如何转化成字符串,则需要你自己想办法解决。

kevinke2012 commented 8 years ago

qq 20160810114851 如图c为返回给客户端的String,正确的返回应该是\uD83D\uDE33,但是在用render(200, 字符串对象, ViewType.string);返回的时候变成乱码,猜测是\uD83D和\uDE33单独被解码了?

allwefantasy commented 8 years ago

恩,应该是被解码了。拿到后能否转义下?

allwefantasy commented 8 years ago

或者存储前做转义

nudui commented 6 years ago

I`ve solved this problem, just insert the following codes in JPA.java at method 'properties()'.
At all , please update your jetty version bigger than 7.

nudui commented 6 years ago
    properties.put("initConnectionSqls","set names utf8mb4");
nudui commented 6 years ago

DruidDataSourceFactory.java里的“config”方法,里面会获取property