gpt4 book ai didi

java - ormlite 更改带有问号的字符

转载 作者:行者123 更新时间:2023-11-29 22:54:22 26 4
gpt4 key购买 nike

我在 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();

但生成以下查询:

SELECT * FROM `question`
WHERE (`title` LIKE '%?????%' OR `questiontext` LIKE '%?????%' )

为什么?

最佳答案

SELECT * FROM `question`
WHERE (`title` LIKE '%?????%' OR `questiontext` LIKE '%?????%' )

嗯,我不确定这里出了什么问题。我添加了 this UTF8 query-build test到 ormlite-core 项目,它通过得很好。

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 'اعصاب' 

这也适用于 SelectArg,这就是ORMLite args。

statement arguments: [اعصاب]
SELECT * FROM `foo` WHERE `string` LIKE ?

我一开始以为这是MySQL的问题。也许您从服务器日志中获取了查询?如果你得到'??????'从本地日志来看,我不确定问题是什么。也许是您的应用程序的默认字符编码?

测试使用 H2,它是 native Java DB,因此可以轻松处理 Java 的字符串。也许看看这些 MySQL 问题/答案来寻求帮助:

有一些关于 MySQL 连接器的更高版本修复了检测数据库字符类型的问题的讨论。

关于java - ormlite 更改带有问号的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28782451/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com