ormlite 用问号改变字符
ormlite change characters with question marks
我在 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 '%?????%' )
Hrm,我不确定这里有什么问题。我已经将 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 执行 ?
参数的方式。
statement arguments: [اعصاب]
SELECT * FROM `foo` WHERE `string` LIKE ?
我最初认为这是 MySQL 的问题。也许您从服务器日志中获取了查询?如果你得到'??????'从本地日志然后我不确定问题是什么。也许是您应用程序的默认字符编码?
测试使用的是 H2,它是原生 Java 数据库,因此可以轻松处理 Java 的字符串。也许看看这些 MySQL questions/answers 寻求帮助:
- How to make MySQL handle UTF-8 properly
- JDBC url for MySQL configuration to use utf8 character encoding
有人谈论 MySQL 连接器的更高版本修复了检测数据库字符类型的问题。
我在 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 '%?????%' )
Hrm,我不确定这里有什么问题。我已经将 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 执行 ?
参数的方式。
statement arguments: [اعصاب]
SELECT * FROM `foo` WHERE `string` LIKE ?
我最初认为这是 MySQL 的问题。也许您从服务器日志中获取了查询?如果你得到'??????'从本地日志然后我不确定问题是什么。也许是您应用程序的默认字符编码?
测试使用的是 H2,它是原生 Java 数据库,因此可以轻松处理 Java 的字符串。也许看看这些 MySQL questions/answers 寻求帮助:
- How to make MySQL handle UTF-8 properly
- JDBC url for MySQL configuration to use utf8 character encoding
有人谈论 MySQL 连接器的更高版本修复了检测数据库字符类型的问题。