java String.getBytes行为

时间:2013-09-05 14:58:43

标签: java string character-encoding byte

假设我从java.sql.ResultSet.getString(1)获取一个String。我从这个字符串中调用了String.getBytes()。

现在无论查询结果集的数据库使用的字符集如何,我都能获得相同的结果吗?即如果我跨不同的数据库(使用不同的字符集)执行该过程,调用getBytes后是否得到相同的结果?

2 个答案:

答案 0 :(得分:1)

是。

存储在数据库中的字节将转换为String中的Unicode字符。

将字符串char转换为您指定的任何字节(或系统默认值)作为字符编码。

Database bytes -> String chars -> Your bytes
            DB encoding     Your encoding

如果数据库中的某些东西搞砸了,或者没有正确解码数据库中字节的JDBC,则字符串将是错误的。例如,如果字节是捷克语的某些UTF-8编码,并且使用某些西方编码或Windows标准编码对它们进行解码,则字符串将是错误的。你会看到,如果你打印字符串,重音字符看起来像分数或有趣的字符组合。

但进入String的任何内容都将根据您指定的字符集进行编码。

答案 1 :(得分:0)

取决于。 db的编码将起作用,如果你的数据库编码是latin1,但你要保存一些超出它的字符集(utf-8 char)的东西,它会将giberish保存为值。获取该错误值的字节与原始字节不同。

相关问题