Форум: "Базы";
Текущий архив: 2003.03.17;
Скачать: [xml.tar.bz2];
ВнизПроблема при записи текста на русском текста в MSSQL2000 Найти похожие ветки
← →
jtiger (2003-02-19 11:01) [0]Я использую MSSQL200+D7+ADO. Пытаюсь записать в базу ФИО на русском. А в место русского в базе получаю каракули. В чем может проблема.
Делаю я это так:
with ADOQEmployee do
begin
Insert;
ADOQEmployeeId.Value := "1";
ADOQEmployeeLastName.Value := "Иванов";
...
Post;
end;
и вместо "Иванов", получаю "Eaaiia". Что за хрень?.
← →
ermserg (2003-02-19 11:20) [1]Posmotri default collation
← →
jtiger (2003-02-19 11:33) [2]to ermserg
смотрел на collation, менял с "SQL_Latin1_General_CP1251_CI_AS" на "Cyrillic_General" не помогает.
← →
ermserg (2003-02-19 17:36) [3]I ne pomozhet esli menyayesh na urovne servera ili db. Kogda sozdayosh novuyu tablitsu, vse char polya berut default database collation (esli ne ukazivayesh collation yavno). Kogda sozdayesh novuyu db - ona poluchayet default collation servera (esli ne ukazivayesh collation yavno).
← →
ermserg (2003-02-19 17:38) [4]P.S. Eto vso dla MSSQL2000, v 7-om po-drugomu.
← →
Tux (2003-02-20 00:22) [5]А поля тово... nvarchar? Надо бы.
← →
jtiger (2003-02-20 05:55) [6]To ermserg:
Делал все, что можно: 1. Создавал новую DB, где по умолчанию collation была "Cyrillic_General", пытался записать и ни фига - каракули.
2. Пробовал менять collation каждого поля различным образом, ну например с "Cyrillic_General" на "SQL_Latin1_General_CP1251_CI_AS" или наоборот. Ну не помогает.
3. Пытался менять на nvarchar. Вроде работает, но работает криво. Т.е. если я записываю русский в базу через Delphi и считываю его, то все нормально (при этом в Enterprise Manager-е вместо русского отображаются каракули). Если же я записываю напрямую через Enterprise Manager ручками, то при считывание в Delphi поля на русском появляются как "??????".
Вот такая хрень.
И еще, я заметил такую, если можно так сказать, особенность. Если я в Regional and Language Options выставляю для "Standarts and formats" - Russain, то все начинает работать нормально. Т.е. и записать и чтение работает нормально, и данные в DB MSSQL2000 тоже отображаются нормально на русском. Но стоит мне поменять региональные установки обратно на English (United States). И все
пошла кривизна. Ведь это же не нормально.
Может кто встречал такую проблему. Помоги плиз.
← →
jtiger (2003-02-21 06:24) [7]Что ни кто не использует MSSQL2000+Delphi7+ADO.
← →
MOA (2003-02-21 10:24) [8]>Если я в Regional and Language Options выставляю для "Standarts and formats" - Russain, то все начинает работать нормально
А у Вас Windows дуиает, что он не в России - тогда, м.б., проблема со шрифтами в EM?
Удачи!
← →
jtiger (2003-02-21 11:54) [9]to MOA:
Нет EM прекрасно понимание и отображает на русском, т.е. если я напрямую набираю в EM на русском, то нет ни каких проблем.
Вообщем, целый день ковырялся и думаю, что это ГЛЮК 7-ых делфей.
Дело в том, что изменяемые данные храняться в кэше компонента ADOQuery. Тип полей данных - OleVariant. И при присваивание введенного русского текста полю, текст преобразуется к типу OleVariant. Так вот это преобразование и глючит.
← →
SoftPacker (2003-02-21 14:26) [10]У меня была подобная проблема ... Необходимо указать серверу что пользователь под которым ты входишь в SQL -сервер то же являеться Russian: EM> Security> Login>Propertes>Language
← →
jtiger (2003-02-21 15:05) [11]to SoftPacker
Нет не работает.
← →
fio (2003-02-21 17:24) [12]Возможно проблема в используемом языке SQL-сервера
функция
@@LANGUAGE
SELECT @@LANGUAGE AS "Language Name"
Установить по умолчанию для всех
SET LANGUAGE us_english
← →
jtiger (2003-02-22 06:26) [13]To fio:
SELECT @@LANGUAGE AS "Language Name"
как раз и выдает, что:
Language Name
---------------------------------------------------------------
us_english
(1 row(s) affected)
Нет проблема в не SQL сервере.
Еще до записи в БД SQL сервера, на клиенте, при вводе на русском, например в DBEdit, а затем выхода из DBEdit-а, и появляются каракули, т.е. еще до команды "ADOQuery.Post"
Решил проверить, что будет, если я попробую следующую конфигурацию - MSSQL2000+Delphi6+ADO. Оказалось, при такой конфигурации ВСЕ РАБОТАЕТ НОРМАЛЬНО, т.е. как и должно быть, и запись и чтение русского без проблем, изменение региональных установок также ни как ни влияет.
Поэтому я думаю, что это именно Delphi 7 глючит.
← →
Delirium (2003-02-22 18:01) [14]> Поэтому я думаю, что это именно Delphi 7 глючит.
Некорректная фраза по отношению к Delphi 7. Надо бы так:
"Поэтому я думаю, что это у меня именно Delphi 7 глючит."
← →
sniknik (2003-02-22 22:46) [15]> "??????".
Вот такая хрень.
вот это наводит на мысль, что некоректна работа с юникодом, именно так и бывает когда юникод в строку преобразовывать с неправильной позиции.
к примеру небольшой код, посмотри к чему приведет 2-е присваивание
var st, wt: string;
begin
st:= "String";
wt:= StringOfChar(#0, Length(St)*2+1);
StringToWideChar(st, Addr(wt[1]), Length(St)*2+1);
Label1.Caption:= WideCharToString(Addr(wt[1]));
Label2.Caption:= WideCharToString(Addr(wt[2]));
end;
то что в 6 работает а в 7 нет, тоже может служить подтверждением этому, слышал что там все на юникод перевели (утверждать конечно не буду т.к. не работал в 7-ом).
← →
jtiger (2003-02-24 06:06) [16]to Delirium:
согласен.
to sniknik:
проверить уже не могу, снес я Delphi 7 и установил Delphi 6.
Наверное вы правы на счет юникод. Но мне от это не хуже не лучше. Факт остается фактом, что с русским У МЕНЯ 7-ые Делфи нормально не работают (это только, конечно, при использовании ADO).
← →
yozhik (2003-02-24 12:22) [17]У нас была такая же проблема...
Оказалось все в настройках виндов (Win 2000 Server), дожен стоять русский язык по умолчанию
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.03.17;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.125 c