Опять русские буквы...

Вопросы программирования и использования среды Lazarus.

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

Опять русские буквы...

Сообщение Brainenjii » 10.05.2007 10:51:08

Приветствую... В общем, в очередной раз проблема с русскими буквами - Lazarus (0.9.20) в Линуксе (OpenSUSE10.2) не выводит русских букв из Firebird базы... Равно как и Fenix-sql... Кодировку cp1251 хотелось бы оставить - приложению еще и в винде работать.. Да и вообще, в редакторе не получается написать что-нибудь по-русски...
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Attid » 10.05.2007 11:33:59

GTK\GTK2?
приложение в какой локале запускаешь ?
при подключении к базе cp1251 указываешь ?
какими компонентами пользуешься ?

ЗЫ: у меня все по русски. GTK\cp1251\UIB
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение Brainenjii » 10.05.2007 14:16:38

GTK - второй... Пользуюсь FBLib, при подключении указываю кодировку WIN1251... Как узнать в какой локали запускаю приложение ? :)

ЗЫ. Есть ли какой-нибудь аналог MessageBoxEx'у ?
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Attid » 10.05.2007 15:27:32

Как узнать в какой локали запускаю приложение ?


попробуй так :
Код: Выделить всё
$ locale
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение Brainenjii » 10.05.2007 15:36:05

где попробовать ? :(
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Attid » 10.05.2007 17:09:31

в консоле, а основы линукса на другом сайте :roll:
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение alexs » 11.05.2007 00:17:10

Если GTK2 - то у тебя вывод должен идти в utf8 - я не знаю - FBLib умеет на лету перекодироватьиз Win1251 в UTF8 и обратно? (скорее всего нет) т.е. ты сам должен осуществить эту перекодировку
у меня аналогичная проблема - приходится пока оставаться на GTK1 из-за этого
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение tria » 11.05.2007 10:37:49

alexs писал(а):Если GTK2 - то у тебя вывод должен идти в utf8 - я не знаю - FBLib умеет на лету перекодироватьиз Win1251 в UTF8 и обратно? (скорее всего нет) т.е. ты сам должен осуществить эту перекодировку
у меня аналогичная проблема - приходится пока оставаться на GTK1 из-за этого


Т.е. под GTK2 возможна работа только в локали UTF8?
Win1251 не работает?
А то я маюсь, пытаюсь заставить работать...
tria
постоялец
 
Сообщения: 401
Зарегистрирован: 03.04.2006 11:24:10

Сообщение debi12345 » 11.05.2007 11:45:02

Т.е. под GTK2 возможна работа только в локали UTF8?
Win1251 не работает?
А то я маюсь, пытаюсь заставить работать...

Мда, линуксовые GUI-тулкиты во всей красе. Лоскуты, которые никак не хотят сшиваться в одеяло.
Народ, не сдавайтесь !!!
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5752
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение Brainenjii » 11.05.2007 15:54:24

Хм... колдунство, но пересобрав Лазарус в GTK2 (до этого этот самый GTK второй был установлен, про это и отвечал), CHAR'ы и VARCHAR'ы из базы стали читаться нормально :) Правда меню Lazarus'а стало "????", но это неважно - перевел в англицкий, так даже привычней :) А важно, что из blob полей все-равно вопросы вылезают :( Можно как-нибудь сделать так, чтоб если Linux - перекодировать, если Windows - оставлять как есть ? :)[/img]
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение tria » 11.05.2007 16:18:49

Brainenjii писал(а):Хм... колдунство, но пересобрав Лазарус в GTK2 (до этого этот самый GTK второй был установлен, про это и отвечал), CHAR'ы и VARCHAR'ы из базы стали читаться нормально :) Правда меню Lazarus'а стало "????", но это неважно - перевел в англицкий, так даже привычней :) А важно, что из blob полей все-равно вопросы вылезают :( Можно как-нибудь сделать так, чтоб если Linux - перекодировать, если Windows - оставлять как есть ? :)[/img]


Конкретно тебе помогут директивы компилятора:
{$IFDEF MSWINDOWS}
{$ENDIF MSWINDOWS}
{$IFDEF Linux}
{$ENDIF Linux}

"????" - это из за того, что текст в одной кодировке, прога работает в другой кодировке.
tria
постоялец
 
Сообщения: 401
Зарегистрирован: 03.04.2006 11:24:10

Сообщение Brainenjii » 11.05.2007 17:44:11

Спасибо :) Вроде работает - в винде по-крайней мере все в порядке и после моих преобразований ^_^ А вот в Линуксе не совсем, хотя уже лучше :)
Код: Выделить всё
function TFBLDsql.BlobFieldAsString(const AFieldIdx: integer): string;
var
  StringStream: TStringStream;
begin
  Result := '';
  StringStream := TStringStream.Create('');
  try
    BlobFieldSaveToStream(AFieldIdx, StringStream);
    Result := StringStream.DataString;
    // Добавил Я
    {$IFDEF Linux}
    Result := AnsiToUtf8(Result);
    {$ENDIF Linux}
    // Вот и все...
  finally
    StringStream.Free;
  end;
end;

После этого глобального изменения знаки вопроса заменились на крякозябру :) Т.е. ???????? ???????? стало Îñíîâíûå ñðåäñòâà... Как понимаю, теперь UTF8 надо преобразовать в koi8-r, или это как раз и есть то, что в GTK2 не работает ?
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение tria » 11.05.2007 18:42:23

Скорее всего тебе надо попробовать шрифты подобрать.
Попробуй для контрола, в котором кракозябры, поуказывать другой шрифт.
По умолчанию в новых Линуксах утф8.
Для утф8 русский текст я выводить не пробовал, надобности небыло.
tria
постоялец
 
Сообщения: 401
Зарегистрирован: 03.04.2006 11:24:10

Сообщение Brainenjii » 13.05.2007 14:59:55

Не, врят ли проблема в шрифтах... В том же гриде данные из той же БД, но в VARCHAR'ах - нормально отображаются... Почитал статью про русские буквы в Firebird на ibase.ru, там написано, что как раз строковые типы конвертируются автоматически, в отличии от Blob'ов... Так что, подозреваю, я просто неправильно перевожу с WIN1251 на UTF8... Точно, что AnsiToUTF - это из cp1251, а не из ДОС'a ? :) И если нет, то как конвертнуть правильно ? :)
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Attid » 13.05.2007 16:02:31

try to look here
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

След.

Вернуться в Lazarus

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

Сейчас этот форум просматривают: sunjob и гости: 18

Рейтинг@Mail.ru