0

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

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

4

2 回答 2

1

是的。

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

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

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

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

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

于 2013-09-05T15:01:50.107 回答
0

要看。数据库的编码将发挥作用,如果您的数据库编码是 latin1 但您保存的内容超出了它的字符集(utf-8 字符),它将把乱码保存为值。获取该错误值的字节与原始值不同。

于 2013-09-05T15:07:52.290 回答