Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.27;
Скачать: CL | DM;

Вниз

Русский язык в InterBase   Найти похожие ветки 

 
a123 ©   (2003-03-05 18:54) [0]

C IB столкнулся недавно, по необходимости, и сразу проблема!!!
Что надо сделать чтобы в таблице запоминались слова написаные на русском.Подскажите, пожалуйста. Бьюсь уже второй день :-(


 
a123 ©   (2003-03-05 19:00) [1]

Неужели никто не знает?


 
Кирилл_   (2003-03-05 19:41) [2]

При создании базы надо было указать DEFAULT WINDOWS-1251 или что-то вроде этого.


 
valery ©   (2003-03-05 19:53) [3]

Нужно указывать кодировку при создании БД, а также в компонентах доступа.

1) Пример создания БД
create database "c:\example.gdb" user "SYSDBA" password "masterkey"
page_size = 16384
default character set WIN1251;

2) В компоненте доступа (TDatabase, TIBDatabase etc)
Params.Values["lc_ctype"]:="WIN1251";


 
Vinni   (2003-03-05 21:29) [4]

И еще не забыть указать в полях типа VARCHAR COLLATE PXW_CYRL


 
Johnmen ©   (2003-03-06 00:03) [5]

Всем ответившим :
Выставление character set и collate совсем не обязательно для того, чтобы в "таблице запоминались слова написаные на русском" !


 
a123 ©   (2003-03-06 10:02) [6]

А что обязательно?
Так как я это делал, но ничего не выходит...


 
zacho ©   (2003-03-06 10:06) [7]

Смотри http://www.ibase.ru/devinfo/ibrusfaq.htm


 
Соловьев ©   (2003-03-06 10:11) [8]

SET NAMES определяет кодировку используемую для последующих вложений базы данных. Это позволяет ISQL отменить кодировку базы данных по умолчанию.



 
Johnmen ©   (2003-03-06 10:16) [9]

>a123 © (06.03.03 10:02)
>Так как я это делал, но ничего не выходит...

А как делал то ?



 
a123 ©   (2003-03-06 10:31) [10]

1)создал БД:
CREATE DATABASE "C:\flatsmy\db\AFlat.gdb"
user "sysdba"
password "masterkey"
PAGE_SIZE 4096
DEFAULT CHARACTER SET WIN1251
2)создаю таблицу:
CREATE TABLE "ACARDS"
(
"ID_FLAT" INTEGER NOT NULL,
"QTY_ROOM" INTEGER,
"M_ALL" FLOAT,
"M_LIVE" FLOAT,
"ADDRESS" VARCHAR(100) CHARACTER SET WIN1251,
"DATE_UCHET" DATE,
"QTY_PERSON" INTEGER,
"COMMENT" BLOB SUB_TYPE TEXT SEGMENT SIZE 80 CHARACTER SET WIN1251,
"DATE_ZAYAV" DATE
PRIMARY KEY ("ID_FLAT")
);
3)В компоненте доступа TIBDatabase etc)
Params.Values
user_name=SYSDBA
lc_ctype=WIN1251
password=masterkey




 
Johnmen ©   (2003-03-06 10:35) [11]

А может просто не стоит использовать 3 диалект ? :)))
Или в нем есть жесткая(жестокая ? :)) необходимость ?


 
a123 ©   (2003-03-06 10:37) [12]

Пробовал и с первым...
Сейчас еще попробую...


 
Max Zyuzin ©   (2003-03-06 10:37) [13]

>Johnmen © (06.03.03 10:35)
А при чем тут 3-й диалект???


 
Johnmen ©   (2003-03-06 10:55) [14]

>Max Zyuzin © (06.03.03 10:37)

Ну как причем... Попробуй поработать с русск.кодировкой в нем...
Если будет успех сообщи, обменяемся впечатлениями...:)))


 
zacho ©   (2003-03-06 11:02) [15]


> Johnmen © (06.03.03 10:55)

Работаю давно, все нормально. Что я неправильно делаю ?


 
Max Zyuzin ©   (2003-03-06 11:13) [16]

>Johnmen © (06.03.03 10:55)
Ты знаешь, я тоже работаю, и проблем пока не наблюдаю... давай менятся впечатлениями :)))


 
Johnmen ©   (2003-03-06 11:13) [17]

>zacho © (06.03.03 11:02)
>Работаю давно, все нормально. Что я неправильно делаю ?

Все правильно делаешь, если все нормально :)
А как делаешь - сиё мне неведомо...


 
myor ©   (2003-03-06 11:19) [18]

указывал при создании бд win1251- не срабатывало.
указал none- заработало.


 
a123 ©   (2003-03-06 11:22) [19]

"указал none- заработало."
Это интересно...



 
a123 ©   (2003-03-06 11:38) [20]

Ура!!!! Заработало!!! :-)
Всем большое спасибо!

В моем случае сработал вариант:
"myor © (06.03.03 11:19)
указывал при создании бд win1251- не срабатывало.
указал none- заработало"

Но как это объяснить?....:-)


 
a123 ©   (2003-03-06 11:40) [21]

тоесть я нигде, нигде не указывал win1251...


 
Johnmen ©   (2003-03-06 11:52) [22]

И я тоже никогда и нигде не указывал, и все замечательно...
А подробности см. в ссылке zacho © (06.03.03 10:06)


 
zacho ©   (2003-03-06 11:53) [23]


> Johnmen © (06.03.03 11:13)
> А как делаешь - сиё мне неведомо...

Обычно :-) А какие проблемы должны быть-то ? Правда могу сказать, что по русски не таблицы, не поля обзывать не пробовал, может проблемы в этом случае возникают ? Или в версии сервера дело ? У меня Yaffil SS 854

> a123 © (06.03.03 11:38)

Почитай все-таки http://www.ibase.ru/devinfo/ibrusfaq.htm
И как именно не работало-то? Ошибку выдавало или что?


 
valery ©   (2003-03-06 12:16) [24]

Если не указывать кодировку при создании/подключении, то будут проблемы с сортировкой по строковым полям с кириллицей

Запросы типа
select * from acards order by address
будут возвращать некорректно отсортированный набор данных

Именно из этих соображений кодировку стоит указывать всегда


 
a123 ©   (2003-03-06 12:16) [25]

Да, ошибка при попытке запомнить такую запись
или отобразить таблицу с русскими символами:
Project Aflat.exe raised exception EIInterBaseError with message "arithmetic exception, numeric overflow? or string truncation
Cannot transliterate charecter between charecter sets"/ Proces stopped/ Use Step or Run to continue.


 
Johnmen ©   (2003-03-06 12:47) [26]

>zacho © (06.03.03 11:53)
>А какие проблемы должны быть-то ?

Проблемы не должны быть ...:)))
Тогда что здесь не так ? (FB)
SET SQL DIALECT 3;
CREATE DATABASE "..." PAGE_SIZE 4096 DEFAULT CHARACTER SET WIN1251;
CREATE TABLE "T1"
( "C1" VARCHAR(12) CHARACTER SET WIN1251,
"C2" VARCHAR(12) CHARACTER SET WIN1251 COLLATE PXW_CYRL);

При попытке в IBConsole сделать
INSERT INTO "T1" ("C1","C2") VALUES ("Вася","Петя");
возникает известная ошибка...
Может я туплю, может не догоняю, но ошибка имеет место быть...


 
zacho ©   (2003-03-06 13:03) [27]


> Johnmen © (06.03.03 12:47)

Только что попробовал:
SET SQL DIALECT 3;

SET NAMES WIN1251;

CREATE DATABASE "LOCALHOST:C:\Test.gdb"
USER "SYSDBA" PASSWORD "1"
PAGE_SIZE 4096
DEFAULT CHARACTER SET WIN1251;

CREATE TABLE "TeSt2" (
"Ttttdddeee" VARCHAR(30)
);

При попытке сделать
INSERT INTO "TeSt2" ("Ttttdddeee") VALUES ("Вася")
все нормально !
SELECT, UPDATE и т.д. - тоже Ok !
Правда, IBConsole у меня нет, все это делал в IBExpert.
Так что у тебя похоже имеет место быть баг в IBConsole или в FB.
А на другой сборке FB или из чего-нибудь более другого, чем IBConsole, не пробовал ?


 
serg_   (2003-03-06 21:21) [28]

Да, есть такая проблема. Я ее решил так:
создаю базу с DEFAULT CHARACTER SET WIN1251
создаю таблицы, пробую заполнять русскими буквами - не получается!
Делаю Unregister базы, затем Register и выбираю при этом WIN1251.
ВСЕ РАБОТАЕТ!!!


 
Johnmen ©   (2003-03-06 21:37) [29]

>serg_ (06.03.03 21:21)

Вот это уже интересно ! Получается, что баг в IBConsole...
Благодарю за помощь.


 
zacho ©   (2003-03-06 22:10) [30]


> Вот это уже интересно ! Получается, что баг в IBConsole...

Еще одна причина не пользоваться консолью :-)


 
Johnmen ©   (2003-03-06 23:58) [31]

>zacho © (06.03.03 22:10)

Согласен, но привычка сильнее. Хотя и IBExpert тоже использую.


 
myor ©   (2003-03-07 10:26) [32]

интересный вариант unregister/register. обязательно попробую.


 
Anatoly Podgoretsky ©   (2003-03-07 10:32) [33]

Johnmen © (06.03.03 23:58)
Может ты это не сделал в консоли SET NAMES WIN1251?


 
Johnmen ©   (2003-03-07 10:43) [34]

>Anatoly Podgoretsky © (07.03.03 10:32)

Делал ! И не только это, а еще и полную кучу изворотов...
А вот unregister/register действительно помогло !!!
Хотя я придерживаюсь мнения, что никаких кодировок вообще не надо определять. Всегда делал none и проблем не было. А тут просто решил побаловаться с 3 диал-ом...



Страницы: 1 вся ветка

Текущий архив: 2003.03.27;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.016 c
3-87843
Avsam
2003-03-10 12:34
2003.03.27
Random SQL


1-88018
xGrey
2003-03-14 10:27
2003.03.27
Drag and Drop в TTreeView: отсутствие скроллинга.


1-87928
Юлия
2003-03-17 13:56
2003.03.27
Макроподстановка


3-87823
Злодей
2003-03-08 12:05
2003.03.27
BDE


1-88047
WMag
2003-03-14 23:53
2003.03.27
Коллекции данных