2016-06-14 100 views
0

選擇的Json場我有一個問題關於是NamedParameterJdbcTemplate使用時queryForList()方法選擇的Json場。春:的queryForList(是NamedParameterJdbcTemplate的)不能在UTF-8

在我的數據庫我哈瓦一個JSON字段名「類型」與值:{"Demo.Name": "株式"},當我的列表我檢索設置調試,它成爲這樣的:"Demo.Name": "æ ªå¼"

List<Map<String, Object>> list = namedParameterJdbcTemplate.queryForList(query, params); 

我已經設置utf8_general_ci對於數據庫和集UTF-8爲每個表,如果我寫MySQL查詢上SQLyog的它可以顯示的結果完全相同:

SELECT A.Type , JSON_EXTRACT(A.Type, '$."Demo.Name"') 
FROM Customer A 
WHERE JSON_EXTRACT(A.Type, '$."Demo.Name"') = '株式'; 

注:我已嘗試添加"useUnicode=yes;characterEncoding=utf8;"合作但它並沒有工作。

注2:其他領域(不Json的場)在日本值爲好

難道我忘了什麼東西?謝謝你看到我後,我很感激,如果你能給我一些建議

回答

0

æ ªå¼是變爲亂碼的株式

當嘗試使用UTF8/utf8mb4,如果你看到變爲亂碼,檢查以下內容。 這個討論也適用於雙重編碼,這不一定是可見的。

  • 要存儲的字節需要是utf8編碼的。
  • 連接時INSERTingSELECTing文本需要指定utf8或utf8mb4。 (我認爲你的嘗試需要&而不是;。)
  • 該列需要聲明CHARACTER SET utf8(或utf8mb4)。
  • HTML應以<meta charset=UTF-8>開頭。