Путь к базе Firebird с русскими символами

Модератор: Модераторы

Путь к базе Firebird с русскими символами

Сообщение lordgray » 13.02.2016 21:07:40

Здравствуйте!
Компонент TFIBDatabase, Win7x64, Firebird2.5x64, Lazarus 1.6rc2x64, собираю x64.
Если путь к базе на английском, все ОК. Если на русском - ошибка.
Пробовал:
Код: Выделить всё
var
  St: String;
begin
  St := 'E:\База\rcdb_lite.fdb';
  FIBDatabase.DBName := St;//ошибка
  FIBDatabase.DBName := UTF8toSys(St);//ошибка
  FIBDatabase.DBName := LazUTF8.UTF8toWinCP(St);//ошибка
  FIBDatabase.DBName := UTF8Decode(St);//ошибка
  FIBDatabase.Open;

проект собирается без "Использовать Ansistring"
Уже несколько часов убил, результат = 0. ПОМОГИТЕ!
P.S. IBExpert коннектится без проблем.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
lordgray
новенький
 
Сообщения: 60
Зарегистрирован: 10.10.2010 00:19:11

Re: Путь к базе Firebird с русскими символами

Сообщение *Rik* » 13.02.2016 22:34:35

UTF8ToSys теперь отключен. Под Win, попробуйте WinCPToUTF8 и UTF8ToWinCP вместо UTF8ToSys и SysToUTF8 в тех случаях, если что-то где-то само не сконвертировалось. В FPC 3 строки из UTF в Ansi должны сами не явно конвертироваться..
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 451
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: Путь к базе Firebird с русскими символами

Сообщение lordgray » 13.02.2016 22:42:36

*Rik* писал(а):UTF8ToSys теперь отключен. Под Win, попробуйте WinCPToUTF8 и UTF8ToWinCP вместо UTF8ToSys и SysToUTF8 в тех случаях, если что-то где-то само не сконвертировалось. В FPC 3 строки из UTF в Ansi должны сами не явно конвертироваться..

UTF8toSys из LazUTF8 не отключет.
UTF8ToWinCP пробовал, безрезультатно.
lordgray
новенький
 
Сообщения: 60
Зарегистрирован: 10.10.2010 00:19:11

Re: Путь к базе Firebird с русскими символами

Сообщение kosteek » 14.02.2016 00:21:27

uses ...,LConvEncoding...
CP1251ToUTF8 или UTF8ToCP1251
kosteek
постоялец
 
Сообщения: 203
Зарегистрирован: 24.07.2008 14:57:09
Откуда: Украина, г.Славянск

Re: Путь к базе Firebird с русскими символами

Сообщение lordgray » 14.02.2016 00:50:32

kosteek писал(а):uses ...,LConvEncoding...
CP1251ToUTF8 или UTF8ToCP1251


Спасибо. Только что докопался сам. Это хорошо, НО.
А если путь на арабском? Или китайском? Как определить ANSI codepage системы.
...
Все, сам разобрался!

Код: Выделить всё
var tmp: RawByteString;
begin
  tmp :=UTF8toAnsi(Path);
  SetCodePage(tmp, GetACP, true);
  FIBDatabase.DBName := tmp;
  ...
lordgray
новенький
 
Сообщения: 60
Зарегистрирован: 10.10.2010 00:19:11

Re: Путь к базе Firebird с русскими символами

Сообщение *Rik* » 14.02.2016 10:16:14

lordgray писал(а):
kosteek писал(а):uses ...,LConvEncoding...
CP1251ToUTF8 или UTF8ToCP1251


Спасибо. Только что докопался сам. Это хорошо, НО.
А если путь на арабском? Или китайском? Как определить ANSI codepage системы.
...
Все, сам разобрался!

Код: Выделить всё
var tmp: RawByteString;
begin
  tmp :=UTF8toAnsi(Path);
  SetCodePage(tmp, GetACP, true);
  FIBDatabase.DBName := tmp;
  ...

lordgray Вам респект, я это в своем форке использую, сейчас проверил, он с FB то-же под Win с русскими путями не работает..
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 451
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: Путь к базе Firebird с русскими символами

Сообщение Zhanat » 17.02.2016 09:45:20

lordgray писал(а):Если на русском - ошибка.

1) открыл файл c:\Program Files\Firebird\Firebird_2_5\aliases.conf
2)прописал "dummy = D:\Test 3\Русский.FDB" без ковычек
3) указал в компоненте IBConnection1.DatabaseName:='localhost:dummy';

так подключается
Zhanat
новенький
 
Сообщения: 21
Зарегистрирован: 06.09.2013 08:46:40

Re: Путь к базе Firebird с русскими символами

Сообщение *Rik* » 17.02.2016 10:56:08

Zhanat писал(а):
lordgray писал(а):Если на русском - ошибка.

1) открыл файл c:\Program Files\Firebird\Firebird_2_5\aliases.conf
2)прописал "dummy = D:\Test 3\Русский.FDB" без ковычек
3) указал в компоненте IBConnection1.DatabaseName:='localhost:dummy';

так подключается

Алиасы несомненно лучший вариант, но не всегда есть доступ в системные каталоги и приходится оперировать исключительно в папке пользователя...
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 451
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: Путь к базе Firebird с русскими символами

Сообщение Zhanat » 17.02.2016 11:26:28

v-t-l писал(а):v-t-l

v-t-l писал(а):v-t-l » 07.06.2009 18:56:23

lexa_bear писал(а):
Что, TIBConnection не понимает русских символов в Databasename?

Если версия Lazarus > 0.9.26, то в IDE русские буквы вводятся в кодировке UTF8, которую fbclient.dll не понимает.
Если очень надо, чтобы база лежала в путях с русскими буквами, воспользуйтесь файликом aliases.conf в папке firebird, и впишите туда что-то вроде
КОД: ВЫДЕЛИТЬ ВСЁ
mybase1=C:\ПутьКМоейБазе\База.fdb

а в IBConnection.Databasename напишите mybase1


http://www.freepascal.ru/forum/viewtopic.php?f=26&t=4436
Zhanat
новенький
 
Сообщения: 21
Зарегистрирован: 06.09.2013 08:46:40


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

Рейтинг@Mail.ru