从服务器收到的字符串显示特殊字符“?”

时间:2015-11-07 03:34:49

标签: java json google-app-engine http

我有一个servlet从云sql获取一些数据,创建一个java对象,将其转换为json并将其附加到响应编写器。

问题是这些数据可能包含带有特殊字符的字符串,例如“ç”和“ã”。

servlet对请求进行身份验证,然后执行以下操作:

resp.getWriter().append(new Gson().toJson(new MyDataType(resultset)));
resp.setContentType("application/json");

我也尝试将响应编码设置为“utf-8”,把这个

<property name="file.encoding" value="UTF-8" />
<property name="DEFAULT_ENCODING" value="UTF-8" />

在appengine-web.xml文件的系统属性下,但没有任何效果。

客户端中的代码如下:

URL u = new URL(myurl);
HttpURLConnection connection = (HttpURLConnection) u.openConnection();
InputStream is = connection.getInputStream();
InputStreamReader in = new InputStreamReader(is, "utf-8");
MyDataType l = new Gson().fromJson(in, MyDataType.class);

我需要做些什么才能正确显示字符串?

1 个答案:

答案 0 :(得分:0)

将服务器代码更改为

resp.setContentType("application/json");
resp.setCharacterEncoding("UTF-8");
resp.getWriter().append(new Gson().toJson(new MyDataType(rs3)));

解决了这个问题。

相关问题