Русские символы под Линукс

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

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

Сообщение tria » 15.09.2006 16:18:51

Давайте я выскажу более полно свою задачу.
Существует программа на Лазаре под Винду (в свою очередь переводилась с Делфи). Рассчитана она на работу с базой в Firebird в кодировке 1251. База уже существует и перекодировать ее не очень то и хочется.
Кроме того, в программе присутствуют строковые константы, содержащие русские символы. Ну и русские комментарии терять тоже не хочется.

Собственно, на Лазаря программа переделывалась ради кроссплатформенности. Т.е. с одной базой должны работать клинеты и из под Винды, и из под Линукса.

Может кто-то уже решал подобную задачу? Поделитесь методикой, если можно.
tria
постоялец
 
Сообщения: 401
Зарегистрирован: 03.04.2006 11:24:10

Сообщение Сергей Смирнов » 15.09.2006 17:26:04

tria писал(а):Давайте я выскажу более полно свою задачу.
Существует программа на Лазаре под Винду (в свою очередь переводилась с Делфи). Рассчитана она на работу с базой в Firebird в кодировке 1251. База уже существует и перекодировать ее не очень то и хочется.
Кроме того, в программе присутствуют строковые константы, содержащие русские символы. Ну и русские комментарии терять тоже не хочется.

Собственно, на Лазаря программа переделывалась ради кроссплатформенности. Т.е. с одной базой должны работать клинеты и из под Винды, и из под Линукса.

Может кто-то уже решал подобную задачу? Поделитесь методикой, если можно.
Ну, скажем так, некоторую часть этой проблемы я решал следующим образом: в WinXP открывал блокнотом файл с исходниками в ANSI кодировке (1251), а потом сохранял в UTF8. Или наоборот... не помню точно. С базой данных проблем вообще быть не должно, хотя при переносе с сервака на винде на сервак на линуксе однозначно лучше воспользоваться бэкап-рестором.
Аватара пользователя
Сергей Смирнов
энтузиаст
 
Сообщения: 595
Зарегистрирован: 28.04.2005 13:23:25
Откуда: Москва

Сообщение debi12345 » 15.09.2006 22:23:44

tria писал(а):базой в Firebird в кодировке 1251. База уже существует и перекодировать ее не очень то и хочется.
...
Т.е. с одной базой должны работать клинеты и из под Винды, и из под Линукса.

А "жарптичка" поддерживает опцию соединения вроде CLIENT_ENCODING ? Вроде бы серьезный сервер - должна быть. Или ошибаюсь ?

tria писал(а):Кроме того, в программе присутствуют строковые константы, содержащие русские символы. Ну и русские комментарии терять тоже не хочется.

Сочувствую - комплексное и прозрачное решение, по части строковых констант и комментариев, вижу пока только в MSEgui ( изначально сделанном под знаменем тотального UNICODE). Там в редакторе задается формат хранения исходников "utf8" ( что даст одинаковый текст и в Вынь32, и в Линуксе ), а для компилятора - выставляется недокументированная FPC-опция "-Fcutf8" ( для переноса строковых констант в бинарники без искажений ).

Короче, если Лазарус тоже умеет хранить исходники в utf8, то остается вопрос - прописать "-Fcutf8", да так, чтобы срабатывало каждый раз при сборке проеков.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение jwv » 16.09.2006 00:47:57

tria писал(а):В /usr/lib/locale/ каталога ru_RU.cp1251 небыло. После:
localedef --no-archive -i ru_RU -f cp1251 ru_RU.cp1251
он появился.
Пробую:
# LC_ALL=ru_RU.cp1251 strace -e trace=open lazarus 2>&1 |grep ru_RU
open("/usr/share/locale/ru_RU.cp1251/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/ru_RU/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
-*-arial-medium-r-normal--12-*-*-*-*-*-microsoft-cp1251,*-r-*" does not support all the required character sets for the current locale "ru_RU.cp1251"
open("/usr/share/locale/ru_RU.cp1251/LC_MESSAGES/gtk+.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/ru_RU/LC_MESSAGES/gtk+.mo", O_RDONLY) = -1 ENOENT (No such file or directory)

Вопрос. Почему ищется файл в /usr/share/locale/ru_RU/
а не в /usr/lib/locale/
?
От чего это зависит?
Не, ну я конечно могу попробовать тупо скопировать директорию из одной папочки в другую. Но я линукс не знаю и не ведаю, к чему это приведет.


в /usr/lib/locale/ лежит описание локали в /usr/share/locale/ru_RU.cp1251/LC_MESSAGES лежат переводы сообщений программ
так что можешь спокойно файлики libc.mo и gtk+.mo из американской локали в /usr/share/locale/ru_RU.cp1251/LC_MESSAGES копировать.
будет у тебя вместо "Да"/"Нет" "Yes"/"No"
jwv
новенький
 
Сообщения: 21
Зарегистрирован: 10.05.2005 12:23:16

Сообщение tria » 18.09.2006 11:25:42

Я так понял, что все предлагают переходить на utf8. У меня соответствпенно накопилось еще несколько вопросов.
1. Может ли Лазарус под Виндоуз работать в кодировке utf8? И как это сделать?
2. Как указать визуальным компонентам, что они работают в utf8?
3. Поддерживает ли FIBL utf8?
4. Я так понял, редактор исходного кода Лазаря под Линукс работает только в utf8? (имеется в виду последний, 0.9.16).
5. Каких граблей стоит ожидать при работе с переменными типа string?
tria
постоялец
 
Сообщения: 401
Зарегистрирован: 03.04.2006 11:24:10

Сообщение tria » 19.09.2006 18:06:53

Судя по всему, в Win32 работать с utf8 нет возможности.

Тогда может кто-нибудь подскажет, как можно заставить работать редактор кода в Линуксе на кодировке cp1251?
Я так понимаю, в версии 0.9.14 такая возможность была, а начиная с 0.9.16 ее убрали...
tria
постоялец
 
Сообщения: 401
Зарегистрирован: 03.04.2006 11:24:10

Сообщение jwv » 20.09.2006 14:41:43

tria писал(а):Судя по всему, в Win32 работать с utf8 нет возможности.

Тогда может кто-нибудь подскажет, как можно заставить работать редактор кода в Линуксе на кодировке cp1251?
Я так понимаю, в версии 0.9.14 такая возможность была, а начиная с 0.9.16 ее убрали...

что конкретно не работает?
Код: Выделить всё
LC_ALL=ru_RU.cp1251 lazarus

результат:
Изображение

Lazarus 0.9.16
Ubuntu 6.06 LTS
jwv
новенький
 
Сообщения: 21
Зарегистрирован: 10.05.2005 12:23:16

Сообщение Сергей Смирнов » 20.09.2006 16:02:38

Убунту с cp1251 и ГТК1 :) Да, наверное пришлось потрудиться...
Аватара пользователя
Сергей Смирнов
энтузиаст
 
Сообщения: 595
Зарегистрирован: 28.04.2005 13:23:25
Откуда: Москва

Сообщение jwv » 20.09.2006 17:05:36

Сергей Смирнов писал(а):Убунту с cp1251 и ГТК1 :) Да, наверное пришлось потрудиться...

да не особо, cp1251 и ГТК1 только для Лазаря всё остальное utf8 и GTK2 :)
jwv
новенький
 
Сообщения: 21
Зарегистрирован: 10.05.2005 12:23:16

Сообщение tria » 20.09.2006 22:45:30

Я наверное неправильно делал, что компилил Лазаря под Gtk2?
tria
постоялец
 
Сообщения: 401
Зарегистрирован: 03.04.2006 11:24:10

Сообщение tria » 20.09.2006 22:46:51

А Лазарь поставляемый в бинарном виде - он скомпиленный под Gtk1 или Gtk2?
tria
постоялец
 
Сообщения: 401
Зарегистрирован: 03.04.2006 11:24:10

Сообщение jwv » 21.09.2006 11:18:54

tria писал(а):Я наверное неправильно делал, что компилил Лазаря под Gtk2?

У тебя получилось под ГТК2 скомпилить? точнее он у тебя под ГТК2 заработал? у меня нет :( , правда я особо и не старался :) в Лазаре скомпелённом под ГТК1 вполне нормально ГТК2 проги писать можно :)
jwv
новенький
 
Сообщения: 21
Зарегистрирован: 10.05.2005 12:23:16

Сообщение jwv » 21.09.2006 11:19:52

tria писал(а):А Лазарь поставляемый в бинарном виде - он скомпиленный под Gtk1 или Gtk2?

точно не скажу, но скорее всего под ГТК1
jwv
новенький
 
Сообщения: 21
Зарегистрирован: 10.05.2005 12:23:16

Сообщение tria » 21.09.2006 13:26:57

jwv писал(а):У тебя получилось под ГТК2 скомпилить? точнее он у тебя под ГТК2 заработал? у меня нет :( , правда я особо и не старался :) в Лазаре скомпелённом под ГТК1 вполне нормально ГТК2 проги писать можно :)


0.9.14 скомпилился и под CentOS и под MyLinux
0.9.16 только под CentOS, под MyLinux не захотел.

Вчера снес Лазаря на MyLinux-е и поставил с нуля. Запустил
LC_ALL=ru_RU.cp1251 LANG==ru_RU.cp1251 lazarus
И появился русский текст в редакторе кода! Но в таком г.. шрифте...
Запустил из меню, установил интерфейс en - говорит, что шрифт не поддерживает utf8.
После этого запустил снова в cp1251 - изменился шрифт и вместо русских символов кракозяберы. Пытаюсь установить шрифт в редакторе - список шрифтов пустой.
Я так понял, текущая проблема - это шрифты. Щас сижу гуглю по этому поводу.
tria
постоялец
 
Сообщения: 401
Зарегистрирован: 03.04.2006 11:24:10

Сообщение jwv » 21.09.2006 14:50:16

tria писал(а):Я так понял, текущая проблема - это шрифты. Щас сижу гуглю по этому поводу.


попробуй MS Шрифты. пакет msttcorefonts называется.
jwv
новенький
 
Сообщения: 21
Зарегистрирован: 10.05.2005 12:23:16

Пред.След.

Вернуться в Lazarus

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

Сейчас этот форум просматривают: Google [Bot] и гости: 12

Рейтинг@Mail.ru