Страница 1 из 1
Использование различных языков в значениях текстовых полей
Добавлено: 03 окт 2007, 16:31
fmcoder
У меня программа рассчитана на использование людьми в разных странах. Поэтому встала проблема - каждый должен иметь возможность писать/читать оттуда данные в нужной кодировке.
Отображать скажем на русской системе французские буквы не нужно. Но на русской русский буквы должны выглядеть как надо, аналогично с французской системой и т.п.
Пока нашел 2 пути решения:
1. Указать charset NONE для базы при создании и все будет писаться и читаться как есть. В компонентах отображения кодировка DEFAULT_CHARSET, т.е. используется та, которая в системе.
2. Использовать unicode или utf8 - но тут я так понимаю возникнут сложности, т.к. пишу на delphi, а там компоненты юникод не держат. А ставить сторонние не хочется.
Что лучше?
Добавлено: 03 окт 2007, 17:53
hvlad
Ещё можно создавать БД и коннектиться к ней, используя родной для данной страны чарсет.
Добавлено: 03 окт 2007, 18:09
fmcoder
Тогда, придется для каждой страны прописывать свой чарсер, определять, какой установлен в системе и т.п. Мне кажется сложновато.
Сегодня постараюсь попробовать с null думаю должно сработать...
Добавлено: 04 окт 2007, 07:52
Dimitry Sibiryakov
fmcoder писал(а):Мне кажется сложновато.
Тогда найми программиста чтобы он это сделал.
ЗЫ: Вот уж не думал, что для кого-то покажется сложным засунуть поле ввода/выбора чарсета в диалог создания БД...
Добавлено: 05 окт 2007, 01:34
fmcoder
Да я сам программист...
Делать выбор - это больше организационная сложность, т.е. лишние телодвижения от пользователя потребуются. Да и бд думаю лучше тащить в инсталляторе уже созданную (мало ли что, еще заглючит при первом запуске).
С Charset NONE проверил - работает нормально. Так и оставлю.
Добавлено: 05 окт 2007, 07:49
Dimitry Sibiryakov
Мнда... Лично я бы не рассчитывал, что такой программой действительно будут пользоваться "люди в разных странах"...
Добавлено: 08 окт 2007, 19:20
fmcoder
Да тут рассчитывать вобщем-то не надо, уже пользуются

А firebird я прикручиваю в новой версии для расширения функционала.
А чем так плохо?
С charset=none заметил пока небольшую сложность.
Если редактировать через грид (вписать в ячейку русские буквы и сохранить) - то все ок.
Если же
Код: Выделить всё
insert into "TracksTables" ("tName", "dispName") values ('xxx', 'Название с русскими буквами...');
То получается какая-то хрень... Вместо русских букв в гриде появляется фиг знает что.
Как лечить?
Добавлено: 08 окт 2007, 22:07
kdv
Вместо русских букв в гриде появляется фиг знает что.
ух, ох. сначала тебе надо сходить на форум по дельфям, про многоязычные программы почитать.
Добавлено: 10 окт 2007, 00:04
fmcoder
Все таки непонятно при чем тут delphi? Единственное, что можно сделать покрутить charset, я менял по разному толку ноль.
В датасете стоит InsertSQL, UpdateSQL и т.п. соответственно, редактируем в гриде, все записывается и читается нормально. Тот же запрос, но через Database.Execute('insert...' ...) русские буквы запарываются.
Попробовал использовать SQL монитор чтобы посмотреть как он исполняет запрос при редактировании в гриде, но там почему-то все выглядит так:
Код: Выделить всё
UPDATE "TracksTables"
SET
"tName" = ? ,
"dispName" = ?
WHERE
"tName" IS NULL
вопросы вместо реальных данных.
Может как-то надо строки оформить? Или еще что-нибудь с ними делать?
Добавлено: 10 окт 2007, 10:35
kdv
Все таки непонятно при чем тут delphi?
ну как причем. ты же пишешь
"Вместо русских букв в гриде появляется фиг знает что."
каким образом грид связан с IB/FB? Никаким. При none что ты записал в базу, то и считывается. Другое дело как это ВЫВОДИТСЯ В ДЕЛЬФИ.
Добавлено: 10 окт 2007, 19:02
fmcoder
Как выясгнилось, проблема была не в дельфях и гриде - у Database в ConnectParams стояла кодировка UTF8. Поставил none и все стало работать как надо.