【发布时间】:2014-11-13 10:40:57
【问题描述】:
我最近将我的 latin1 数据库转换为 utf8。我所有的排序规则和连接属性都设置为 utf8,我也在使用 &useUnicode 作为 mysql 驱动程序 url。
问题是,由于 Java 将字符串存储在 utf16 中,我是否需要进行一些转换,或者驱动程序是否将其从 utf16 即时转换为 utf8 以进行连接,反之亦然? 我确实问过一般情况,但也问过我们目前使用的 spring jdbc。
编辑: 假设用户键入任何类型的字符串,无论它是什么编码到摇摆 JTextField 中。 Java 接受它,将其转换为 utf16 并存储它。如果我告诉我的 jdbc 驱动程序我将发送的所有数据都已经是 utf8 并且它不应该转换,那是怎么回事。 当然我做了测试,效果很好,但是为什么呢?
【问题讨论】:
-
你为什么不试试告诉我们? :)
-
这太好了,不能持久......所以我最好问一下:)
-
java 不会在 UTF-16 中“存储”字符串,它将字符处理为 Unicode,内部表示无关紧要,你告诉它你想如何在外部“存储”它们。您将其保留为您选择的默认值。大多数人在外部将它们呈现为 UTF-8。
-
所以通过 utf8 连接从数据库获取字符串将使 rs.getString("Col") 与 new String(rs.getString("Col").getBytes(),"utf8 的输出相同")?