Java 用问号替换字符

Java 用问号替换字符,java,mysql,ormlite,Java,Mysql,Ormlite,我在ormlite和Mysql中使用了以下查询: String _textSearch="%اعصاب%"; Where<QuestionEntity, Long> _where= getDao().queryBuilder()).where(); List<QuestionEntity> _lst= _where.or(_where.like("title",_textSearch ), _where.like("questiontext", _textSea

我在ormlite和Mysql中使用了以下查询:

String _textSearch="%اعصاب%";
Where<QuestionEntity, Long> _where= getDao().queryBuilder()).where();

List<QuestionEntity> _lst= _where.or(_where.like("title",_textSearch ),
    _where.like("questiontext", _textSearch)).query();
为什么?

人力资源经理,我不确定这里有什么问题。我已将添加到ormlite核心项目中,它通过得很好

Foo foo = new Foo();
foo.stringField = "اعصاب";
dao.create(foo);
List<Foo> results = dao.queryBuilder().where()
   .like(Foo.STRING_COLUMN_NAME, foo.stringField).query();
assertEquals(foo.stringField, results.get(0).stringField);
这也适用于SelectArg,它是如何工作的?阿格斯

我最初认为这是MySQL的一个问题。也许你从服务器日志中得到了这些查询?如果你从本地日志中得到了“?????”,那么我不确定问题出在哪里。可能是应用程序的默认字符编码

测试使用H2,这是一个本机JavaDB,因此可以轻松处理Java的字符串。请查看以下MySQL问题/答案以获取帮助:


有人谈到MySQL connector的更高版本修复了检测数据库字符类型的问题。

了解如何配置ormlite以使用utf8。您如何查看查询?在日志中?
SELECT * FROM `question`
    WHERE (`title` LIKE '%?????%' OR `questiontext` LIKE '%?????%' )
Foo foo = new Foo();
foo.stringField = "اعصاب";
dao.create(foo);
List<Foo> results = dao.queryBuilder().where()
   .like(Foo.STRING_COLUMN_NAME, foo.stringField).query();
assertEquals(foo.stringField, results.get(0).stringField);
SELECT * FROM `foo` WHERE `string` LIKE 'اعصاب' 
statement arguments: [اعصاب]
SELECT * FROM `foo` WHERE `string` LIKE ?