Java编码,与数据库的连接

Java编码,与数据库的连接,java,mysql,spring,jdbc,Java,Mysql,Spring,Jdbc,我最近将我的latin1数据库转换为utf8。我的所有排序规则和连接属性都设置为utf8,并且我使用&useUnicode作为mysql驱动程序url 问题是,当Java将字符串存储在utf16中时,我是否需要进行一些转换,或者驱动程序是否会将其从utf16动态转换为utf8以用于连接,反之亦然? 我通常会问,但我们目前使用的SpringJDBC也会问 编辑: 假设用户键入任何类型的字符串,而不管它是如何编码到swing JTextField中的。Java接受它,将其转换为utf16并存储。如果

我最近将我的latin1数据库转换为utf8。我的所有排序规则和连接属性都设置为utf8,并且我使用&useUnicode作为mysql驱动程序url

问题是,当Java将字符串存储在utf16中时,我是否需要进行一些转换,或者驱动程序是否会将其从utf16动态转换为utf8以用于连接,反之亦然? 我通常会问,但我们目前使用的SpringJDBC也会问

编辑: 假设用户键入任何类型的字符串,而不管它是如何编码到swing JTextField中的。Java接受它,将其转换为utf16并存储。如果我告诉我的jdbc驱动程序,我将发送的所有数据都已经是utf8,并且不应该转换,那么这是如何实现的呢。
当然我做了测试,效果很好,但是为什么呢?

utf16和utf8之间的转换是双向的。因此,我认为只要在java代码中尽可能地指定'readthisautf8',就不需要进行任何转换。如果您从数据库中读取原始字符串,您可能根本不需要指定,当驱动程序/ORM从数据库中检测到编码时,它应该接受该字符串。

为什么不试试并告诉我们呢?:)太好了,持续不了。。。所以我最好问一下:)java不在UTF-16中“存储”字符串,它将字符作为Unicode进行处理,内部表示是不相关的,您可以告诉它您希望如何在外部“存储”它们。您可以选择默认设置。大多数人在外部将其呈现为UTF-8。因此,通过utf8连接从数据库获取字符串将使rs.getString(“Col”)与新字符串(rs.getString(“Col”).getBytes(),“utf8”)具有相同的输出?