我想在firebird sql查询中使用非ascii字符串文字。因此,我使用FlameRobin来查看它是否首先起作用:我使用了类似的方法:
SELECT NAME FROM TABLE1 WHERE NAME = 'العربية'
我也尝试过:
SELECT NAME FROM TABLE1 COLLATE UNICODE_CI_AI WHERE NAME = 'العربية'
没有成功。因为我已经使用UTF8字符集和UNICODE_CI_AI排序规则声明了NAME。
从此引荐网址链接:https : //firebirdsql.org/file/documentation/reference_manuals/fblangref25-zh-CN/html/fblangref25-appx06-charsets.html
FlameRobin抛出有关语法的错误,它实际上不理解:'العربية'字符串。因此,我决定使用Firebird Maestro更改数据库管理工具来进行测试,该工具现在可以接受此类非ascii字符串文字,但过滤器工作不正确。
如何解决这个问题?
注意:我正在使用firebird v2.5
Firebird使用连接字符集来知道如何编码字符串值。默认值是NONE
指没有应用特定的字符集转换,并且每个工具/客户端的确切行为各不相同,但是通常,客户端会应用系统默认的字符集在字节值和字符串之间进行转换。
从FlameRobin连接时,您需要指定连接字符集UTF8,您的查询将起作用
SELECT NAME FROM TABLE1 WHERE NAME = 'العربية'
如果未指定连接字符集,则将应用连接字符集NONE,结果将以平台默认编码(在Windows上不是utf8,但在Windows-1252上)解释字符串值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句