[英]MySQL, Java and UTF8
我在每個表上都有ENGINE=InnoDB DEFAULT CHARSET=utf8
表中具有MEDIUMBLOB
字段的數據庫。
我使用URL上的useUnicode=true&characterEncoding=UTF8&character_set_client=UTF8&character_set_database=UTF8&character_set_results=UTF8&character_set_server=UTF8&character_set_system=UTF8
連接到數據庫。
(我嘗試只使用useUnicode=true&characterEncoding=UTF8
獲得相同的結果。)
當我從命令行使用mysql
查看數據庫中的值時,我可以看到非ASCII字符就好了。
但是,當我使用executeQuery()
getString()
從數據庫中讀取字符串時,我變得亂七八糟。 如何正確讀取值?
我正在使用log4j來顯示我正在寫到數據庫中的字符串,我讀回的字符串以及我寫的那些字符串都很好。
那是BLOB,不是字符串。 因此,您需要getBytes
並對其進行手動解碼。
new String( bytes, "UTF-8"); //Subsitute "UTF-8" with whatever encoding the blob is in
如果要獲得更透明的支持,請使用UTF-8定義一個中文本列。 這樣所有配置將生效,並且您可以使用getString自動獲得正確的字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.