Запись в БД - проблема с кодировкой
От: plasticman  
Дата: 16.12.10 13:13
Оценка:
Добрый день,

пишу данные в mssql server:
SqlCommand WriteDeps = new SqlCommand(@"
insert into Departments(DepName) values (@name)", new SqlConnection(Destination_connection_string));

SqlParameter paramName = new SqlParameter("@name", SqlDbType.VarChar);
WriteDeps.Parameters.Add(paramName);
WriteDeps.Connection.Open();
paramName.Value = "тест";
WriteDeps.ExecuteNonQuery();
WriteDeps.Connection.Close();

Беда в том что в БД пишется "????" вместо "тест".
В самой таблице БД поле DepName типа varchar(max).
Где может быть ошибка подскажите, пожалуйста?
Re: Запись в БД - проблема с кодировкой
От: vmpire Россия  
Дата: 16.12.10 13:26
Оценка:
Здравствуйте, plasticman, Вы писали:

P>Беда в том что в БД пишется "????" вместо "тест".

P>В самой таблице БД поле DepName типа varchar(max).
P>Где может быть ошибка подскажите, пожалуйста?
Проверьте, что у поля кириллический collation или используйте тип nvarchar(max)
Re: Запись в БД - проблема с кодировкой
От: Alexandr Sulimov Украина www.ase.com.ua
Дата: 16.12.10 13:30
Оценка:
Здравствуйте, plasticman, Вы писали:

P>Беда в том что в БД пишется "????" вместо "тест".

P>В самой таблице БД поле DepName типа varchar(max).
P>Где может быть ошибка подскажите, пожалуйста?

Проверьте что collation у поля DepName правильные.
Посмотрите в сторону nvarchar(max)
... << RSDN@Home 1.2.0 alpha 4 rev. 1090>>
Re[2]: Запись в БД - проблема с кодировкой
От: plasticman  
Дата: 16.12.10 15:01
Оценка:
Здравствуйте, Alexandr Sulimov, Вы писали:

AS>Здравствуйте, plasticman, Вы писали:


P>>Беда в том что в БД пишется "????" вместо "тест".

P>>В самой таблице БД поле DepName типа varchar(max).
P>>Где может быть ошибка подскажите, пожалуйста?

AS>Проверьте что collation у поля DepName правильные.

AS>Посмотрите в сторону nvarchar(max)

nvarchar(max) пробовал ставить — не помогло
collation поменял с default на Windows Collation — Cyrillic_General (в SQL Collation не нашел cyrillic) — тоже безрезультатно.
Интрига еще и в том что на этом же сервере есть похожая БД(настройки те же), и с ней проблем нет. Заполняется она так же программно, но символы распознаются верно.
Re: Запись в БД - проблема с кодировкой
От: vmpire Россия  
Дата: 16.12.10 15:29
Оценка:
Здравствуйте, plasticman, Вы писали:

P>Беда в том что в БД пишется "????" вместо "тест".

P>В самой таблице БД поле DepName типа varchar(max).
P>Где может быть ошибка подскажите, пожалуйста?
А файл с программным кодом у Вас в какой кодировке?
И как определяете, что именно записалось?
Re[2]: Запись в БД - проблема с кодировкой
От: plasticman  
Дата: 16.12.10 15:38
Оценка:
Здравствуйте, vmpire, Вы писали:

V>Здравствуйте, plasticman, Вы писали:


P>>Беда в том что в БД пишется "????" вместо "тест".

P>>В самой таблице БД поле DepName типа varchar(max).
P>>Где может быть ошибка подскажите, пожалуйста?
V>А файл с программным кодом у Вас в какой кодировке?
V>И как определяете, что именно записалось?

В какой кодировке файл с кодом даже не знаю — делаю в VS2008
Определяю запросом к таблице в SQL Management Studio и так же считывая значения из БД с помощью SqlClient — в обоих случаях знаки вопроса
Re[3]: Запись в БД - проблема с кодировкой
От: vmpire Россия  
Дата: 16.12.10 15:49
Оценка:
Здравствуйте, plasticman, Вы писали:

V>>А файл с программным кодом у Вас в какой кодировке?

P>В какой кодировке файл с кодом даже не знаю — делаю в VS2008
Может, посмотрите? Мне-то отсюда не видно
Re[4]: Запись в БД - проблема с кодировкой
От: plasticman  
Дата: 16.12.10 15:55
Оценка:
Здравствуйте, vmpire, Вы писали:

V>Здравствуйте, plasticman, Вы писали:


V>>>А файл с программным кодом у Вас в какой кодировке?

P>>В какой кодировке файл с кодом даже не знаю — делаю в VS2008
V>Может, посмотрите? Мне-то отсюда не видно

я жутко извиняюсь, не подскажите как это сделать?
Re[5]: Запись в БД - проблема с кодировкой
От: vmpire Россия  
Дата: 16.12.10 16:47
Оценка:
Здравствуйте, plasticman, Вы писали:

V>>>>А файл с программным кодом у Вас в какой кодировке?

P>>>В какой кодировке файл с кодом даже не знаю — делаю в VS2008
V>>Может, посмотрите? Мне-то отсюда не видно

P>я жутко извиняюсь, не подскажите как это сделать?

Меню File/Advanced save options
или посмотрите файл любым шестнадцатеричным редактором и пришлите оттуда коды букв слова "тест"
Re[6]: Запись в БД - проблема с кодировкой
От: plasticman  
Дата: 17.12.10 08:03
Оценка:
Здравствуйте, vmpire, Вы писали:

V>Здравствуйте, plasticman, Вы писали:


V>>>>>А файл с программным кодом у Вас в какой кодировке?

P>>>>В какой кодировке файл с кодом даже не знаю — делаю в VS2008
V>>>Может, посмотрите? Мне-то отсюда не видно

P>>я жутко извиняюсь, не подскажите как это сделать?

V>Меню File/Advanced save options
V>или посмотрите файл любым шестнадцатеричным редактором и пришлите оттуда коды букв слова "тест"

File/Advanced save options показывает:
Unicode (UTF-8 with signature) — Codepage 65001
Re[7]: Запись в БД - проблема с кодировкой
От: vmpire Россия  
Дата: 17.12.10 10:50
Оценка:
Здравствуйте, plasticman, Вы писали:


V>>>>>>А файл с программным кодом у Вас в какой кодировке?

P>>>>>В какой кодировке файл с кодом даже не знаю — делаю в VS2008
V>>>>Может, посмотрите? Мне-то отсюда не видно

P>>>я жутко извиняюсь, не подскажите как это сделать?

V>>Меню File/Advanced save options
V>>или посмотрите файл любым шестнадцатеричным редактором и пришлите оттуда коды букв слова "тест"

P>File/Advanced save options показывает:

P>Unicode (UTF-8 with signature) — Codepage 65001
Поправьте строчку SqlParameter paramName = new SqlParameter("@name", SqlDbType.NVarChar);
Если не поможет — попробуйте сохранить как Unicode Codepage 1200.
Или так ещё попробуйте:


SqlCommand WriteDeps = new SqlCommand(@"into Departments(DepName) values (@name)", new SqlConnection(Destination_connection_string));
WriteDeps.Parameters.Add(new SqlParameter("@name", "тест")); 
WriteDeps.Connection.Open();
WriteDeps.ExecuteNonQuery();
WriteDeps.Connection.Close();
Re[8]: Запись в БД - проблема с кодировкой
От: plasticman  
Дата: 17.12.10 11:21
Оценка:
V>Поправьте строчку SqlParameter paramName = new SqlParameter("@name", SqlDbType.NVarChar);

Помоголо, спасибо огромное!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.