Добрый день всем...
Не могу понять, почему фаердак игнорирует указанную кодировку при определении подключения. Явно указываю UTF8, но в результате, после создания def-a там оказывается WIN1251. Кто-нибудь может указать, куда копать?
Также уточню: проявляется это если приложение запускается просто дабл-кликом. Но это же приложение и этот же код, запущенный службой с использованием srvany отрабатывает исправно и выставляет верную кодировку, 'UTF8'. Какие тут могут быть особенности запуска от пользователя?
constructor TMyClass.Create(aDBOptions: TDBOptions);
var
oParams: TStringList;
ch: String;
begin
inherited Create;
fConnectionManager := TFDManager.Create(nil);
// http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Defining_Connection_(FireDAC)
oParams := TStringList.Create;
try
oParams.Clear;
oParams.Values['CharacterSet'] := C_DB_CharSet; // C_DB_CharSet = 'UTF8'
oParams.Values['User_Name'] := C_DB_UserName;
oParams.Values['Password'] := C_DB_Password;
oParams.Values['Server'] := C_DB_Server;
oParams.Values['Protocol'] := 'TCPIP';
oParams.Values['Port'] := IntToStr(C_DB_Port);
oParams.Values['SQLDialect'] := IntToStr(C_DB_SQLDialect); // 3
oParams.Values['OSAuthent'] := 'No';
oParams.Values['Database'] := fDBOptions.SystemFileName;
oParams.Values['Alias'] := 'System';
ch := oParams.Values['CharacterSet']; // ch = 'UTF8'
fConnectionManager.AddConnectionDef(DCQ_SYSTEM_DB, 'FB', oParams, True);
ch := oParams.Values['CharacterSet']; // ch = 'UTF8'
fConnectionManager.GetConnectionDefParams(DCQ_SYSTEM_DB, oParams);
ch := oParams.Values['CharacterSet']; // ch = 'WIN1251'
finally
FreeAndNil(oParams);
end;
end;