CB2009下Firebird的UNICODE不支持吗?

Jonix 2008-10-09 04:06:14
准备将软件升级到CB2009, 主要原因是为了解决国际化问题, 所以UNICODE是非常重要的解决方案
由于使用的是Firebird数据库,所以先进行了测试, 结果失败:
目前程序是CB2007下开发, 使用的是 Firebird 最新的 2.1.1 版本, 测试是在嵌入式引擎下,
因为软件是以这种方式提供的

尝试了Firebird的 GB_2312, UTF8, UNICODE_FSS, NONE 五种编码,
OS 为简体中文和日文下, 主要试验了INSERT和SELECT语句,

结果在简体中文下INSERT的记录, 在日文下SELECT出来是问号, 即根本无法识别

如何无法解决这个问题, 过几天要测试 SQLlite , 并考虑改用它了
...全文
238 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jonix 2008-10-10
  • 打赏
  • 举报
回复
DBX 中没试过BLOB,但ADO和IBX中没问题

关键是把Field转换成TField类型,里面有LoadFromStream和SaveToStream方法。
Jonix 2008-10-10
  • 打赏
  • 举报
回复
不,用的是IBX, 先用的是JCL中的UIB, 结果发现一个很大的问题:
在SuperServer下,INSERT/UPDATE/DELET 操作后 RowAffected 会返回实际影响的数据集,
但同样的执行文件,用FB嵌入式库时,就永远返回 0 了。这一点对我影响极大,
所以试了试 IBX,非常好用。
以前用DBX试过操作过,很烂,所以现在不愿意去碰DBX了。
Jonix 2008-10-10
  • 打赏
  • 举报
回复
终于试出来了,
数据库创建时, 编码必须是 NONE的
但是在控件打开数据库进行操作时,
编码要设置为:
lc_ctype=UNICODE_FSS

真是奇怪呀.

不过要当心的是: 我创建的 VARCHAR(20) 字段,
无法放: 终阳伟强人页发 7个汉字
7个汉字占了21个VARCHAR位置,

UNICODE的字节数要长嘛, 这个要当心的.

icyf 2008-10-10
  • 打赏
  • 举报
回复
问下楼主,你用什么连接FB数据库的?dbx吗?如果是dbx,请问blob字段是怎样处理的,谢谢。
hemiya 2008-10-09
  • 打赏
  • 举报
回复
cb下的unicode是utf16,
utf8下面的中文编码是3个字节,英文1个字节
gb2312是两个字节,
utf16中英文都是2个字节.
gb2312,gbk,gb18030和utf16之间的兼容性比较好,
utf8和中文的编码兼容性差.

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧