Привет всем.

Есть интересная ситуация с передачей unicode строки в UDF и получения такой же строки обратно. Есть пробная UDF с таким текстом

library wstrudf;

{$R *.res}

uses Windows, SysUtils;

threadvar
  W: PWideChar;

function TestWideChar(Input: PWideChar): PWideChar; cdecl; export;
begin
  W := Input;
  Result := W;
end;

exports
  TestWideChar name 'TestWideChar';

begin
  System.IsMultiThread := True;
end.

В базе объявлена как
DECLARE EXTERNAL FUNCTION TWC
    VARCHAR(20) CHARACTER SET UNICODE_FSS
RETURNS VARCHAR(20) CHARACTER SET UNICODE_FSS FREE_IT
ENTRY_POINT 'TestWideChar' MODULE_NAME 'wstrudf'

Вся база тоже в UNICODE_FSS.

Запрос
select TWC('ява') from rdb$database
вернёт 'ÿâa'

Как решить эту проблему.

Ответить