MySQL,Java和UTF8

时间:2013-02-06 13:26:30

标签: java mysql unicode utf-8

我的表中有MEDIUMBLOB个字段的数据库,每个表都有ENGINE=InnoDB DEFAULT CHARSET=utf8

我在网址上使用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来显示我正在写入数据库的字符串,以及我读回的字符串,以及我写的那些字符串。

1 个答案:

答案 0 :(得分:5)

这是一个BLOB,而不是一个字符串。所以你想要getBytes并手动解码它。

 new String( bytes, "UTF-8"); //Subsitute "UTF-8" with whatever encoding the blob is in

如果您需要更透明的支持,请使用UTF-8定义一个mediumtext列。然后,所有配置都将生效,并使用getString自动获得正确的字符串。