Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-54113
[BAD]Angel
2003-03-05 20:44
2003.03.17
Помогите с консольным приложением!!! ПЛЗ!


14-54232
Kranch
2003-02-27 23:41
2003.03.17
Hosting


14-54311
Шишкин Илья
2003-02-26 21:58
2003.03.17
Сайт


4-54358
StAL
2003-01-13 20:15
2003.03.17
Можно ли написать VXD на Delphi? Или где и как писать VxD??


14-54275
Kkk
2003-02-28 17:10
2003.03.17
8 марта посвящается





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский