使用ScrollableResults和MySql的字符编码问题
我正在做
private void doSomething(ScrollableResults scrollableResults) {
while(scrollableResults.next()) {
Object[] result = scrollableResults.get();
String columnValue = (String) result[0];
}
}
我在两台电脑上尝试过它
- 工作正常。它是 Windows 7。System.getProperty("file.encoding") 返回 Cp1252。
- 当数据库中的单词有重音时,
columnValue
会得到奇怪的值。是CentOS。 System.getProperty("file.encoding") 返回 UTF-8。
两个数据库都是MySql,字符集:latin1,排序规则:latin1_swedish_ci。
我应该做什么来纠正这个问题?
I'm doing
private void doSomething(ScrollableResults scrollableResults) {
while(scrollableResults.next()) {
Object[] result = scrollableResults.get();
String columnValue = (String) result[0];
}
}
I tried this in two computers
- It works fine. It is a Windows 7. System.getProperty("file.encoding") returns Cp1252.
- When the word in the database has accents
columnValue
gets strange values. Is is a CentOS. System.getProperty("file.encoding") returns UTF-8.
Both databases are MySql, Charset: latin1, Collation: latin1_swedish_ci.
What should I do to correct this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我的建议是在任何地方使用 UTF-8:
在数据库/表中级别(以下 ALTER 不仅会更改表本身的字符集,还会更改所有现有文本列的字符集)
在连接字符串中(这是必需的) MySQL 的 JDBC 驱动程序或者它将使用客户端的编码)
(这是 MySQL 的 JDBC 驱动程序所必需的,否则它将使用客户端的编码)参考资料
My suggestion would be to use UTF-8 everywhere:
at the database/tables level (the following ALTER will change the character set not only for the table itself, but also for all existing textual columns)
in the connection string (which is required with MySQL's JDBC driver or it will use the client's encoding)
References