【发布时间】:2021-03-19 20:25:50
【问题描述】:
我有一个名为“tasks”的表,其中包含 taskid、taskname 和 description 列。
描述列的值带有拉丁字符,例如 'ô'。
SELECT cast(`taskname` as binary)
FROM `tasks` TC_1
WHERE (cast(`description` as binary) IN ( 'Impôrtant' ))
当我在 MySQL 中运行这样的查询时,我得到了结果,但是当我使用 java executequery 方法运行相同的查询时,结果集是空的。
我也尝试过以下查询:
SELECT cast(`taskname` as binary)
FROM `tasks` TC_1
WHERE (cast(`description` as binary) IN (cast( 'Impôrtant' as binary )))
但面临同样的问题。
我认为问题与字符集有关。
我的数据库字符集是“latin1”。
注意:忽略语法错误
【问题讨论】:
-
你确定 executequery 方法不会改变文本吗?您可以在查询日志中查看实际查询。 dev.mysql.com/doc/refman/8.0/en/query-log.html
-
ô可以用 latin1 十六进制编码F4或 utf8 编码为C3B4。如果不知道表格中的哪个十六进制并且在Impôrtant中,我们无法回答您的问题。给出的任何答案都可能是错误的,并且可能会使事情变得更糟。
标签: java mysql character-encoding resultset