我正在做
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/