我正在做

private void doSomething(ScrollableResults scrollableResults) {
    while(scrollableResults.next()) {
       Object[] result = scrollableResults.get();
       String columnValue = (String) result[0];
    }
}


我在两台电脑上尝试过


它工作正常。它是Windows7。System.getProperty(“ file.encoding”)返回Cp1252。
当数据库中的单词带有重音符号时,columnValue将获得奇怪的值。是一个CentOS。 System.getProperty(“ file.encoding”)返回UTF-8。


这两个数据库都是MySql,Charset:latin1,整理:latin1_swedish_ci。

我该怎么做才能纠正这个问题?

最佳答案

我的建议是在任何地方都使用UTF-8


在数据库/表级别(以下ALTER不仅将更改表本身的字符集,还将更改所有现有文本列的字符集)

ALTER TABLE <some table> CONVERT TO CHARACTER SET utf8

在连接字符串中(这是MySQL的JDBC驱动程序所必需的,否则它将使用客户端的编码)

jdbc:mysql://localhost:3306/db_name?useUnicode=yes&characterEncoding=UTF-8



参考文献


MySQL 5.0参考手册

9.1.3.2. Database Character Set and Collation
9.1.3.3. Table Character Set and Collation

连接器/ J(JDBC)参考

20.3.4.4. Using Character Sets and Unicode

关于java - 使用ScrollableResults和MySql的字符编码问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3981785/

10-12 18:07
查看更多