AngularJS + Java 休息 API + MySQL。变音符号无法正确编码

AngularJS + Java Rest API + MySQL. Diacritics won't encode properly

我有一个我无法解决的问题,它是关于编码变音符号(例如:ă Ă â â î È sy Ş ţ Ţ)的问题。问题似乎出在客户端和服务器之间,但我不明白怎么回事,因为我设置的字符集是正确的。

这是代码:

AngularJS边

$http({
        method: 'POST',
        url: serverUrl + 'wr/users/update',
        data: JSON.stringify(content),
            headers: { 'Content-Type': 'application/json; charset=utf-8'
        }});

服务器 - Java Glassfish 4.1 休息 API

@Path("/update")
@POST
@Consumes(MediaType.APPLICATION_JSON + ";charset=utf-8")
@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
public String update(String data) {
    JSONObject result = new JSONObject();
    try {
        JSONObject dataJson = new JSONObject(data);
        System.out.println("[dataJson] " + dataJson.toString());
        if (!dataJson.has("sessionId") ||
            !dataJson.has("user")) {
                result.put("success", "false");
                result.put("errorMessage", "Fields missing.");
        } else {
            int userId = (int) em.createNamedQuery("Session.findAuthorBySession")
                .setParameter("session", dataJson.getString("sessionId"))
                .getSingleResult();
            Users user = this.find(userId);

            JSONObject new_user = dataJson.getJSONObject("user");
            user.setBio(new_user.getString("bio"));
            super.edit(user);

            result.put("success", "true");
        }
    } catch (Exception e) { e.printStackTrace(); }

    return result.toString();
}

如果我在 http post 调用之前打印内容它看起来没问题 ('ă Ă â Â î È ş Ş ţ Ţ') 并且当它到达 Rest API 时,它看起来如下: '? ? ? ? ? ? ? ? ?'.

也许是我遗漏了什么,但我不知道我做错了什么。

为什么会这样?

谢谢。

编辑 1

正如@JoseM 所建议的,我查看了发送到服务器的请求,一切正常。如果不知何故我遗漏了什么,这是请求:

请求headers

Accept:application/json, text/plain, */*
Accept-Encoding:gzip, deflate
Accept-Language:en-US,en;q=0.8,ro;q=0.6,en-GB;q=0.4
Connection:keep-alive
Content-Length:95
Content-Type:application/json; charset=UTF-8
Cookie:lastMessageSeen=151; hideBanner=true; session=7d7f5c64faf243cfbb469641d4a8c9a2
Host:app.meritwork.com
Origin:http://app.meritwork.com
Referer:http://app.meritwork.com/
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36

请求负载

{sessionId: "7d7f5c64faf243cfbb469641d4a8c9a2", user: {bio: "ă Ă â Â î Î ş Ş ţ Ţ"}}

编辑 2

关于jsonjava解码库,我在构建jsonobject之前打印了字符串,都是一样的; json 库不是问题。

我调试了一点代码,似乎 Java 的记录器没有正确打印 UTF-8 字符,问题仍然存在,但我为此打开了另一个 post .链接在这里:RestAPI in Java with MySQL DB: issue on storing data with diacritics