Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Кажется что-то с кодировкой. MS SQL Express 2014  [new]
ProBiotek
Member

Откуда: Moscow
Сообщений: 907
Привет.
Подозреваю, что проблема в кодировке - но как в этом убедится, и что сделать не знаю.

Имеется скрипт в текстовом файле. В нем идет вставка в столбец русского теста. Если после выполнения скрипта заселектить таблицу, то в столбцах будут везде "??? ???? ???????".

Пробовал копировать скрипт по разному:
1. Создавал чистый txt файл. Открывал его через Notepad++. Выставлял различную кодировку (Ansi, UTF). Вставлял скрипт с русским тестом. Сохранял файл. Открывал его - и обычным блокнотом, и Notepad++.
Все было читабельно. Но после выполнения скрипта в таблицу попадали "??? ??? ?????".

Что можно с этим сделать ?
14 сен 15, 12:56    [18146316]     Ответить | Цитировать Сообщить модератору
 Re: Кажется что-то с кодировкой. MS SQL Express 2014  [new]
ProBiotek
Member

Откуда: Moscow
Сообщений: 907
PS. Возможно дело в БД - мне дали бекап. Я его просто загрузил и пытаюсь теперь сделать вставки из скриптов.
Но что делать с этим не пойму.
14 сен 15, 12:58    [18146330]     Ответить | Цитировать Сообщить модератору
 Re: Кажется что-то с кодировкой. MS SQL Express 2014  [new]
o-o
Guest
ProBiotek
идет вставка в столбец русского теста

столбец бывает не "русского текста", а юникодный или нет,
какого у вас типа, varchar или nvarchar?
если неюникодный, то какой у него collation.
перед строковыми константами есть N?
если нету, то в контексте какой базы выполняете, с кирилиическим collation или нет?
14 сен 15, 13:12    [18146452]     Ответить | Цитировать Сообщить модератору
 Re: Кажется что-то с кодировкой. MS SQL Express 2014  [new]
ProBiotek
Member

Откуда: Moscow
Сообщений: 907
o-o
ProBiotek
идет вставка в столбец русского теста

столбец бывает не "русского текста", а юникодный или нет,
какого у вас типа, varchar или nvarchar?
если неюникодный, то какой у него collation.
перед строковыми константами есть N?
если нету, то в контексте какой базы выполняете, с кирилиическим collation или нет?


1. Столбцы типа NVarchar

2. Collation для таблицы указан <database default>
Collation для БД "SQL_Latin1_General_CP1_CI_AS" (пока не понял причем тут Latin1, ну ок)

3. Строковых констант нет !
Вручную написал новый запрос - чтобы исключить проблемы с кодировками при копировании скрипта из файла.
insert into [base1].[sch1].[tab1]
  ([Title],[HasUsers],[Annotation],[Description])
  values
  ('Записи пользователей', 1, 'тест','тест')


ну и в результате, в таблицу в Title,[Annotation],[Description] упал текст: '????? ??????', '????', '????'

Что это означает ?
14 сен 15, 13:22    [18146516]     Ответить | Цитировать Сообщить модератору
 Re: Кажется что-то с кодировкой. MS SQL Express 2014  [new]
o-o
Guest
ProBiotek
Collation для БД "SQL_Latin1_General_CP1_CI_AS" (пока не понял причем тут Latin1, ну ок)

ну так этот SQL_Latin1_General_CP1_CI_AS и есть CP1252, а не 1251.
доставляйте N перед каждой строковой константой
insert into [base1].[sch1].[tab1]
  ([Title],[HasUsers],[Annotation],[Description])
  values
  (N'Записи пользователей', 1, N'тест',N'тест')
14 сен 15, 13:27    [18146548]     Ответить | Цитировать Сообщить модератору
 Re: Кажется что-то с кодировкой. MS SQL Express 2014  [new]
o-o
Guest
а серверный collation тоже SQL_Latin1_General_CP1_CI_AS?
если кириллический, базе сделайте тот же самый
14 сен 15, 13:39    [18146594]     Ответить | Цитировать Сообщить модератору
 Re: Кажется что-то с кодировкой. MS SQL Express 2014  [new]
ProBiotek
Member

Откуда: Moscow
Сообщений: 907
o-o
а серверный collation тоже SQL_Latin1_General_CP1_CI_AS?
если кириллический, базе сделайте тот же самый


Серверный "Cyrillic_General_CI_AS"
Похоже оттого и проблемы.
14 сен 15, 13:48    [18146649]     Ответить | Цитировать Сообщить модератору
 Re: Кажется что-то с кодировкой. MS SQL Express 2014  [new]
ProBiotek
Member

Откуда: Moscow
Сообщений: 907
Вставка N помогла.
Это мой косяк конечно :)
14 сен 15, 13:49    [18146660]     Ответить | Цитировать Сообщить модератору
 Re: Кажется что-то с кодировкой. MS SQL Express 2014  [new]
o-o
Guest
у вас все показания к смене коллэйшена проблемной базе
alter database yourDB collate Cyrillic_General_CI_AS
14 сен 15, 13:52    [18146674]     Ответить | Цитировать Сообщить модератору
 Re: Кажется что-то с кодировкой. MS SQL Express 2014  [new]
o-o
Guest
ProBiotek
Вставка N помогла.
Это мой косяк конечно :)

не, ну держать у себя базу с несерверным коллейшеном себе дороже.
лучше сменить
14 сен 15, 13:54    [18146686]     Ответить | Цитировать Сообщить модератору
 Re: Кажется что-то с кодировкой. MS SQL Express 2014  [new]
ProBiotek
Member

Откуда: Moscow
Сообщений: 907
o-o,

ок. большое спасибо !

Проблем при такой смене не будет ? Например, если сменить кодировку в файле, то весь текст ломается.
С БД такой проблему не будет - существующие строки русского текста останутся нормально, смогу потом просто добавлять другие ?
Я может быть просто не понимаю - нужно, конечно, поглубже этот вопрос изучить :)
14 сен 15, 14:05    [18146742]     Ответить | Цитировать Сообщить модератору
 Re: Кажется что-то с кодировкой. MS SQL Express 2014  [new]
o-o
Guest
ProBiotek
Проблем при такой смене не будет ?

того, что уже в базу занесено, все равно не коснется.
а новые кириллические данные в контексте кириллической же базы сможете добавлять неюникодом.
проблемы могут возникнуть "у них":
если вам базу передали бэкапом, а потом вы им обратно эту бэкапом же отдадите,
у них восстановится с кириллическим коллэйшеном.
и может, у них перестанут совпадать коллэйшены базы и сервера.
но то их проблемы,
а вам-то только лучше будет со всех сторон
14 сен 15, 14:33    [18146858]     Ответить | Цитировать Сообщить модератору
 Re: Кажется что-то с кодировкой. MS SQL Express 2014  [new]
ProBiotek
Member

Откуда: Moscow
Сообщений: 907
o-o,

Спасибо !
14 сен 15, 15:37    [18147240]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить