2016-06-29 89 views
1

我打電話給webservice,返回包含代表®符號的ascii符號的文本。例如:Jackson JSON處理Unicode符號

ACME Corp® Services 

我用彈簧直接作爲JSON對象返回該文本數據,並通過一次進入瀏覽器的JSON數據仍然是正確的:

"service": "ACME Corp® Services" 

但在被渲染通過Handlebars模板並寫入頁我得到:

ACME Corp® Services 

我是否需要在使用前消毒JSON數據?如果是這樣,那麼做什麼最佳實踐?否則,也許我應該在後端做出改變,但我不確定那會是什麼。

+0

這些鏈接可能會有所幫助:https://github.com/wycats/handlebars.js/issues/110和http://codrspace.com/durden/dealing-with-special-characters-in-json-and -handlebar-JS-模板/ – paulsm4

回答

3

您不需要清理內容,但是您必須確保它使用JSON規範允許的有效編碼:通常是UTF-8(替代方案是UTF-16和UTF-32)。

如果內容不被編碼爲UTF-8,但沒有別的東西(比如ISO-8859-1又名「拉丁-1」),您將需要構建Reader它正確解碼:

Reader r = new InputStreamReader(in, StandardCharset.ISO_8859_1); 
MyPOJO pojo = mapper.readValue(r, MyPOJO.class); 

問題,你似乎是具有的是使用的編碼是不正確的。