Firebird数据库无法识别unicode / cyrillic字母

时间:2014-02-14 17:26:16

标签: database encoding firebird collation

在尝试查询Firebird表时,我确实需要有人帮助解决编码问题。

我使用Firebird Maestro连接到firebird数据库: Connection string

问题在于,每当我在SQL查询中包含西里尔文字母时,Firebird都无法正确理解它们。

例如,考虑一些带有西里尔字母的查询:

SELECT * FROM ROYALTY
WHERE ROYALTY.PRIM = 'Кириллица'

即使在PRIM行中有一行包含'Кириллица'值,它也不会返回任何值。

但是,只使用拉丁字母时一切正常:

SELECT * FROM ROYALTY
WHERE ROYALTY.PRIM = 'Latin letters'

请问有人建议做什么吗?

以下是截图,让我的观点清楚:

Error

enter image description here

我尝试使用以下字符集连接到数据库但没有正面结果:

  • NONE
  • ISO8859_5
  • DOS866
  • CYRL
  • WIN1251
  • UNICODE_FSS

其他信息:

  • Firebird版本:2.5.2
  • Firebird Maestro版本7.7.0.1(英文)
  • 我尝试了俄语和英语版本的Windows

2 个答案:

答案 0 :(得分:3)

检查您用于此列的字符集,并确保使用连接字符集,即系统的字符集。 尝试使用Flamerobin或DatabaseWorbench,或者可能是Firebird Maestro可以帮助您,它显然与您正在使用的工具相关。 Firebird本身使用西里尔字母没有问题 对于数据库中的Charset,请选择UTF8。

答案 1 :(得分:1)

这里的问题是您没有使用参数化查询。在IBExpert中,您可以输入一个“:name”分号和参数的名称,它将在下面的窗口中显示。 IBExpert Parameter Test

在Java / C#.Net中使用API​​创建带参数的查询。现在你正在做的是在SQL字符串中提供非ANSI字符,这不会保存你的期望。

我看到你正在使用Firebird Maestro,我不确定该产品用于参数的是什么,但值得一看他们的文档以了解它是什么。 http://www.sqlmaestro.com/products/firebird/maestro/help/10_04_00_query_parameters/实际上,它的格式与冒号和参数的名称相同。