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

Откуда: большая деревня
Сообщений: 265
Ситуация: к линкованному серверу MySQL делается запрос, результат которого помещается в таблицу запросом:
declare @sql nvarchar(max);
set @sql = 'select A.id, A.id_call, A.columna, C.value 
from call_center.call_attribute A
inner join rtk.calls C on C.id = A.id '
insert into elastix.dbo.T1 exec(@sql) at [Elastix29];
select * from elastix.dbo.T1

База rtk в utf8, а база call_center в latin1. Поля таблицы T1 nvarchar(). Выборка, естественно, дает русский текст для utf и кракозябры для latin1. Как добиться русского текста для всей выборки? Информация не потеряна, текст можно перекодировать любы online декодером.

И можно ли использовать временные таблицы (collation сервера Latin1)
PS. Требуется для выгрузки отчета на reporting server, версия MS SQL и SSRS 2005
23 мар 13, 14:31    [14086029]     Ответить | Цитировать Сообщить модератору
 Re: Снова кодировка. Collation?  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
virtuOS,

с нужным collation должны быть поля таблиц и не имеет значения на каком сервере они лежат
создавайте с правильным collation и все будет в порядке
теоретически и в самом select можно перекодировать
select (Name COLLATE Latin1_General_BIN) ....
23 мар 13, 16:20    [14086214]     Ответить | Цитировать Сообщить модератору
 Re: Снова кодировка. Collation?  [new]
virtuOS
Member

Откуда: большая деревня
Сообщений: 265
В том и проблема, что не получается:
Картинка с другого сайта.
23 мар 13, 16:48    [14086274]     Ответить | Цитировать Сообщить модератору
 Re: Снова кодировка. Collation?  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
virtuOS,

вообще-то collation по моему не дает никакого специального отображения
это вроде только для сравнения используется и для сортировки
вам по моему на клиенте надо шрифт подобрать и всего делов
23 мар 13, 18:14    [14086498]     Ответить | Цитировать Сообщить модератору
 Re: Снова кодировка. Collation?  [new]
virtuOS
Member

Откуда: большая деревня
Сообщений: 265
Запрос для сервера отчетов. Два дня голову ломаю, не могу понять, как перекодировку сделать.
23 мар 13, 18:25    [14086552]     Ответить | Цитировать Сообщить модератору
 Re: Снова кодировка. Collation?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31443
virtuOS
Два дня голову ломаю, не могу понять, как перекодировку сделать.
Сиквел не умеет делать перекодировку.

Нужно записать информацию так, что бы ваш "сервер отчетов" её правильно понимал, или настроить перекодировку в этой отчётной системе, если это возможно.
23 мар 13, 18:41    [14086580]     Ответить | Цитировать Сообщить модератору
 Re: Снова кодировка. Collation?  [new]
virtuOS
Member

Откуда: большая деревня
Сообщений: 265
В mySQL есть команда set names <кодировка>, которая позволяет выводить данные в читаемом виде.
Неужели в MS SQL нет подобного?

Отчетная система родная.
23 мар 13, 18:55    [14086609]     Ответить | Цитировать Сообщить модератору
 Re: Снова кодировка. Collation?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31443
virtuOS
В mySQL есть команда set names <кодировка>, которая позволяет выводить данные в читаемом виде.
Неужели в MS SQL нет подобного?
Нету :-(

Считается, что конвертацией нужно заниматься при вставке данных.

Вы представьте, как будет делаться джойн двух таблиц с разной кодировкой, как будут использоваться индексы...

Да, так вот, я сделал тестовую таблицу, вставил данные в utf8, всё выводится нормально.

Не понимаю, может, у меня другой utf8, или как?
ИМХО, что то перекодируется на этапе вставки, может быть, драйвером MySQL?

Вы вообще точно уверены, что в таблицу вставился корректный текст на utf8, байты смотрели, всё правильно?

К сообщению приложен файл. Размер - 27Kb
23 мар 13, 21:44    [14087062]     Ответить | Цитировать Сообщить модератору
 Re: Снова кодировка. Collation?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31443
alexeyvg
Не понимаю, может, у меня другой utf8, или как?
Впрочем нет, оказалось, перекодировка произошла на этапе импорта в базу
В файле был текст
фыва
это в utf8 байты:
EFBBBFD184D18BD0B2B0D0
а в сиквеле байты:
44044B0432043004

Значит, нужно конвертить при импорте.
23 мар 13, 22:01    [14087105]     Ответить | Цитировать Сообщить модератору
 Re: Снова кодировка. Collation?  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62917
Это utf-16
23 мар 13, 22:06    [14087121]     Ответить | Цитировать Сообщить модератору
 Re: Снова кодировка. Collation?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31443
Anatoly Podgoretsky
Это utf-16
Я считал, что в utf16 байты будут такими:
FEFF0444044B04320430

Я смотрю в FAR-е, а он берёт кодировки из виндов
utf8 - кодировка №65001
utf16 - кодировка №1200
23 мар 13, 22:45    [14087257]     Ответить | Цитировать Сообщить модератору
 Re: Снова кодировка. Collation?  [new]
virtuOS
Member

Откуда: большая деревня
Сообщений: 265
alexeyvg
Считается, что конвертацией нужно заниматься при вставке данных.
Вы представьте, как будет делаться джойн двух таблиц с разной кодировкой, как будут использоваться индексы...
Вы вообще точно уверены, что в таблицу вставился корректный текст на utf8, байты смотрели, всё правильно?


У меня и есть вставка данных, только не из файла, а через запрос к линкованному серверу. Я не знаю, как посмотреть формат выдачи в данном случае. Может надо свойства сервера подкрутить или odbc драйвер настроить?
24 мар 13, 09:58    [14088225]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить