1

我有一个数据库,每个表上都有表中的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我使用URL连接到数据库。

(我已经尝试过useUnicode=true&characterEncoding=UTF8相同的结果。)

当我使用mysql命令行查看数据库中的值时,我可以很好地看到非 ASCII 字符。

但是当我使用从数据库中读取字符串时,executeQuery() getString()我得到了胡言乱语。如何正确读取值?

我正在使用 log4j 显示我正在写入数据库的字符串,以及我读回的字符串,以及我写的字符串。

4

1 回答 1

5

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

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

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

于 2013-02-06T13:32:50.630 回答