Использование различных языков в значениях текстовых полей

Модераторы: kdv, CyberMax

Ответить
fmcoder
Сообщения: 46
Зарегистрирован: 24 сен 2007, 20:57

Использование различных языков в значениях текстовых полей

Сообщение fmcoder » 03 окт 2007, 16:31

У меня программа рассчитана на использование людьми в разных странах. Поэтому встала проблема - каждый должен иметь возможность писать/читать оттуда данные в нужной кодировке.
Отображать скажем на русской системе французские буквы не нужно. Но на русской русский буквы должны выглядеть как надо, аналогично с французской системой и т.п.

Пока нашел 2 пути решения:
1. Указать charset NONE для базы при создании и все будет писаться и читаться как есть. В компонентах отображения кодировка DEFAULT_CHARSET, т.е. используется та, которая в системе.

2. Использовать unicode или utf8 - но тут я так понимаю возникнут сложности, т.к. пишу на delphi, а там компоненты юникод не держат. А ставить сторонние не хочется.

Что лучше?

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Сообщение hvlad » 03 окт 2007, 17:53

Ещё можно создавать БД и коннектиться к ней, используя родной для данной страны чарсет.

fmcoder
Сообщения: 46
Зарегистрирован: 24 сен 2007, 20:57

Сообщение fmcoder » 03 окт 2007, 18:09

Тогда, придется для каждой страны прописывать свой чарсер, определять, какой установлен в системе и т.п. Мне кажется сложновато.
Сегодня постараюсь попробовать с null думаю должно сработать...

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 04 окт 2007, 07:52

fmcoder писал(а):Мне кажется сложновато.
Тогда найми программиста чтобы он это сделал.

ЗЫ: Вот уж не думал, что для кого-то покажется сложным засунуть поле ввода/выбора чарсета в диалог создания БД...

fmcoder
Сообщения: 46
Зарегистрирован: 24 сен 2007, 20:57

Сообщение fmcoder » 05 окт 2007, 01:34

Да я сам программист...
Делать выбор - это больше организационная сложность, т.е. лишние телодвижения от пользователя потребуются. Да и бд думаю лучше тащить в инсталляторе уже созданную (мало ли что, еще заглючит при первом запуске).
С Charset NONE проверил - работает нормально. Так и оставлю.

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 05 окт 2007, 07:49

Мнда... Лично я бы не рассчитывал, что такой программой действительно будут пользоваться "люди в разных странах"...

fmcoder
Сообщения: 46
Зарегистрирован: 24 сен 2007, 20:57

Сообщение fmcoder » 08 окт 2007, 19:20

Да тут рассчитывать вобщем-то не надо, уже пользуются :) А firebird я прикручиваю в новой версии для расширения функционала.
А чем так плохо?

С charset=none заметил пока небольшую сложность.
Если редактировать через грид (вписать в ячейку русские буквы и сохранить) - то все ок.
Если же

Код: Выделить всё

insert into "TracksTables" ("tName", "dispName") values ('xxx', 'Название с русскими буквами...');
То получается какая-то хрень... Вместо русских букв в гриде появляется фиг знает что.
Как лечить?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 08 окт 2007, 22:07

Вместо русских букв в гриде появляется фиг знает что.
ух, ох. сначала тебе надо сходить на форум по дельфям, про многоязычные программы почитать.

fmcoder
Сообщения: 46
Зарегистрирован: 24 сен 2007, 20:57

Сообщение fmcoder » 10 окт 2007, 00:04

Все таки непонятно при чем тут delphi? Единственное, что можно сделать покрутить charset, я менял по разному толку ноль.

В датасете стоит InsertSQL, UpdateSQL и т.п. соответственно, редактируем в гриде, все записывается и читается нормально. Тот же запрос, но через Database.Execute('insert...' ...) русские буквы запарываются.

Попробовал использовать SQL монитор чтобы посмотреть как он исполняет запрос при редактировании в гриде, но там почему-то все выглядит так:

Код: Выделить всё

UPDATE "TracksTables"
SET 
    "tName" = ?       ,
    "dispName" = ?          
WHERE
    "tName"  IS NULL 
вопросы вместо реальных данных.

Может как-то надо строки оформить? Или еще что-нибудь с ними делать?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 10 окт 2007, 10:35

Все таки непонятно при чем тут delphi?
ну как причем. ты же пишешь
"Вместо русских букв в гриде появляется фиг знает что."

каким образом грид связан с IB/FB? Никаким. При none что ты записал в базу, то и считывается. Другое дело как это ВЫВОДИТСЯ В ДЕЛЬФИ.

fmcoder
Сообщения: 46
Зарегистрирован: 24 сен 2007, 20:57

Сообщение fmcoder » 10 окт 2007, 19:02

Как выясгнилось, проблема была не в дельфях и гриде - у Database в ConnectParams стояла кодировка UTF8. Поставил none и все стало работать как надо.

Ответить