6

我使用 Delphi 2010、Firebird 2.5.2、IBExpress 组件。

数据库字符集是 UTF8。在 db-connection UTF8 中。

数据库:

var 
  Database: TIBDatabase;
begin
  ...
  Database.params.Clear;
  Database.params.Add('user ''SYSDBA'' password ''masterkey'' ');
  Database.params.Add('page_size 16384');
  Database.params.Add('default character set UTF8');

桌子:

CREATE TABLE NEW_TABLE (
    NEW_FIELD  VARCHAR(255)
);

连接代码:

  Database.params.Clear;
  Database.params.Add('user_name=SYSDBA');
  Database.params.Add('password=masterke');
  Database.params.Add('sql_role_name=UTF8');
  Database.Open;

插入代码:

var
  IBSQL: TIBSQL;
begin
  IBSQL := TIBSQL.Create(nil);
  try
    IBSQL.Database := db;
    IBSQL.Transaction := tr

    IBSQL.SQL.Text := 'insert into NEW_TABLE (NEW_FIELD) values (:param)';

    IBSQL.params[0].Value := 'Ãabc©'; // unsupported symbols :(

    if not IBSQL.Transaction.Active then
      IBSQL.Transaction.StartTransaction;

    IBSQL.ExecQuery; // "Malformed string" exception here

    if IBSQL.Transaction.Active then
      IBSQL.Transaction.Commit;
  finally
    FreeAndNil(IBSQL);
  end;
end;

我收到“格式错误的字符串”异常。如何插入这个字符串?

4

1 回答 1

1

确保您的字段的字符集是 UTF-8。

创建新字段时,您有两种选择:

  1. 使用默认字符集创建域并使用域进行整理和设置字段
  2. 创建没有域的字段,手动设置字符集和整理。

在下图中,显示了使用 IBExpert 使用域创建的字段。

具有域和字符集的 IBExpert

于 2013-11-08T17:43:37.693 回答