如何更改 OrmLite 的编码?

How to change OrmLite's encoding?

我有这个方法:

@Override
public List<Biblioteczka> wyswietlenieKsiazek() throws SQLException
{
    Dao<Biblioteczka,String>biblioteczkaDao=DaoManager.createDao(connectionSource,Biblioteczka.class);
    Where<Biblioteczka,String>queryBuilder=biblioteczkaDao.queryBuilder().where().eq("Rodzaj","Książka");
    PreparedQuery<Biblioteczka>preparedQuery=queryBuilder.prepare();
    List<Biblioteczka>lista=biblioteczkaDao.query(preparedQuery);
    return lista;
}

它应该执行这个查询:

select * from Zbiory where Rodzaj="Książka"

但 OrmLite 不理解 "Książka" 这个词(因为“±”和“ż”)所以我有 0 个结果:

2015-06-04 20:11:21,456 [DEBUG] DaoManager created dao for class class Biblioteczka with reflection
2015-06-04 20:11:21,468 [DEBUG] StatementBuilder built statement SELECT * FROM `Zbiory` WHERE `Rodzaj` = 'Książka' 
2015-06-04 20:11:21,807 [DEBUG] JdbcConnectionSource opened connection to jdbc:mysql://localhost:3306/Biblioteka got #914810065
2015-06-04 20:11:21,823 [DEBUG] BaseMappedStatement prepared statement 'SELECT * FROM `Zbiory` WHERE `Rodzaj` = 'Książka' ' with 0 args
2015-06-04 20:11:21,827 [DEBUG] SelectIterator starting iterator @479233124 for 'SELECT * FROM `Zbiory` WHERE `Rodzaj` = 'Książka' '
2015-06-04 20:11:21,828 [DEBUG] SelectIterator closed iterator @479233124 after 0 rows
2015-06-04 20:11:21,828 [DEBUG] StatementExecutor query of 'SELECT * FROM `Zbiory` WHERE `Rodzaj` = 'Książka' ' returned 0 results
2015-06-04 20:11:22,558 [DEBUG] JdbcConnectionSource closed connection #914810065

如何解决? 我正在使用 MySQL。默认排序规则:utf8_general_ci,默认字符集:utf8,table 排序规则:utf8_general_ci.

好吧,您的应用程序和数据库都理解 UTF-8。你的数据库驱动程序呢?确保 MySQL 的连接字符串(假设您根据您提供的日志使用 MySQL)包含 characterEncodinguseUnicode 参数

jdbc:mysql://server:post/deName?useUnicode=true&characterEncoding=UTF-8

如果这没有帮助你可以试试重型机械

character_set_client=UTF-8&character_set_database=UTF-8&character_set_results=UTF8&character_set_server=UTF-8&character_set_system=UTF-8

最后用

初始化数据库连接
set names utf8

还要确保所有源文件实际上都是 UTF-8。

希望对您有所帮助!