假设我从java.sql.ResultSet.getString(1)获取一个String。我从这个字符串中调用了String.getBytes()。
现在无论查询结果集的数据库使用的字符集如何,我都能获得相同的结果吗?即如果我跨不同的数据库(使用不同的字符集)执行该过程,调用getBytes后是否得到相同的结果?
答案 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保存为值。获取该错误值的字节与原始字节不同。