【发布时间】:2016-03-20 11:54:54
【问题描述】:
它引发一个异常:每次 Delphi XE-8 程序执行这段代码:
procedure TForm_hora_edit_.SpdBtn_KOMISII_ZASEDANIA_Click(Sender: TObject);
begin
Data_Module.IBQuery_KOMISII_ZASEDANIA_.Active := False;
Data_Module.IBQuery_KOMISII_ZASEDANIA_.SQL.Text := 'SELECT * FROM KOMISII_ZASEDANIA ORDER BY ZASED_DT DESC';
Data_Module.IBQuery_KOMISII_ZASEDANIA_.Active := True;
end;
在这一行引发了异常:
Data_Module.IBQuery_KOMISII_ZASEDANIA_.Active := True;
异常信息:
目标多字节中没有 Unicode 字符的映射 代码页
我确实使用免费软件创建了表 KOMISII_ZASEDANIA:用于 IB/FB 的 SQL Manager Lite
数据库的字符集是:UTF8;该表包含来自西里尔字母的字符。
我需要避免上述异常。
【问题讨论】:
-
显示你用来连接的 TDataSet 组件的属性。很可能你忘了设置连接字符集
-
在ibase.ru/devinfo/ibx.htm 找到“lc_type”,并在 sql.ru 上查看论坛
-
我使用的组件是:TIBQuery,它不包含任何属性连接字符集,(和charset没有什么相似之处)。
-
尝试通过ru.wikipedia.org/wiki/IBExpert检查您的数据库//在该IDE中注册数据库后-尝试三个实验:关闭数据库,在注册属性中将Connection Charset设置为{1:NONE; 2:WIN1251; 3:UTF-8 },打开数据库,尝试查询是否会显示数据或失败。另外我建议你检查数据库和表是 UTF-8,而不是 UNICODE_FSS
-
TIBQuery 不会浮在空中 - 你将它连接到一些数据库组件,该组件应该具有正确的连接参数,包括连接字符集
标签: string delphi utf-8 firebird delphi-xe8