代码之家  ›  专栏  ›  技术社区  ›  Daniel Moura

使用ScrollableResults和MySql的字符编码问题

  •  0
  • Daniel Moura  · 技术社区  · 14 年前

    我正在做

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

    我在两台电脑里试过这个

    1. 它工作得很好。这是一个Windows 7。getProperty(“file.encoding”)返回Cp1252。
    2. 当数据库中的单词有重音时 columnValue 获取奇怪的值。是一个世纪。getProperty(“file.encoding”)返回UTF-8。

    两个数据库都是MySql,Charset:latin1,Collation:latin1_-swedish_-ci。

    我该怎么做才能纠正这个错误?

    1 回复  |  直到 14 年前
        1
  •  2
  •   Daniel Moura    14 年前

    我的建议是 UTF-8 无处不在:

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

      ALTER TABLE <some table> CONVERT TO CHARACTER SET utf8
      
    • jdbc:mysql://localhost:3306/db_name?useUnicode=yes&characterEncoding=UTF-8
      

    工具书类