2015-06-16 32 views
2

程序接受評論並保留它。數據庫正確存儲值(我可以將其複製並粘貼到表情符號頁面,並且顯示正確)。我在調試器中看到的postComment請求和getAllComments響應中的字符串是相同的,但它正在發送{0xED,0xA0,0xBD,0xED,0xB8,0x80}而不是{0xF0,0x9F,0x98,0x80}並顯示最多幾個字符,而不是1。如果我將編碼設置爲UnicodeBig表情符號出現在響應,但我們需要使用UTF-8表情符號未被正確編碼輸出寫入器

String jsonString = jsonMapper.toJson(jsonResponse); 
response.setContentType("application/json"); 
response.setCharacterEncoding("UTF-8"); 
response.getWriter().println(jsonString); 

我是否需要面前做一些這些字符串系統編碼爲utf8? 使用的庫是

JSON-簡單 - 1.1(目前是1.1.1) 傑克遜核心2.2.3(目前2.6)

謝謝。

+0

什麼是您期待的JSON字符串?這些應該是代碼點嗎? '{0xF0,0x9F,0x98,0x80}'它看起來不像我的表情符號。 'U + 00F0'是拉丁小寫字母Eth - ð。其餘的是[Unicode控制字符](https://en.wikipedia.org/wiki/Unicode_control_characters)。 – gilly3

+0

應該是笑臉http://www.iemoji.com/view/emoji/885/people/grinning-face –

+0

它似乎是發送uD83D \ uDE00好像它是不同的字符 –

回答

0

這最終成爲Jetty 7的一個問題。爲了解決這個問題,你可以只需.getBytes(String),然後寫出字節並刷新緩衝區。 Java將得到正確的字節,而不是編碼代理對,這是Jetty默認做的。