Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Проблема с кодировкой  [new]
Andrey Blednykh
Member

Откуда:
Сообщений: 52
Добрый день, фурумчане, не подскажите можно ли перекодировать данные:

База MS SQL 2005, SQL_Latin1_General_CP1_CI_AS
В таблице русские символы отображаются как
Àðõèâàòîð WinRAR (òîëüêî óäàëåíèå)
12 авг 13, 15:23    [14697385]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Andrey Blednykh,

То есть сначала русские символы сохраняются в виде абракадабры, а потом эту абракадабру нужно декодировать? Не проще ли сразу сохранять в виде русских символов?
12 авг 13, 15:33    [14697477]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой  [new]
Andrey Blednykh
Member

Откуда:
Сообщений: 52
Если я не ошибаюсь абракадабра появляется как результат кодировки SQL_Latin1_General_CP1_CI_AS. К сожалению, изменить ее, возможности нет.

Тип поля varchar(255).
12 авг 13, 15:36    [14697504]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой  [new]
Glory
Member

Откуда:
Сообщений: 104760
Andrey Blednykh
как результат кодировки SQL_Latin1_General_CP1_CI_AS.

Только это не кодировка
12 авг 13, 15:38    [14697514]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой  [new]
Andrey Blednykh
Member

Откуда:
Сообщений: 52
Извините Collation
12 авг 13, 15:40    [14697522]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой  [new]
Glory
Member

Откуда:
Сообщений: 104760
Andrey Blednykh
Извините Collation

И как вы собирались хранить в поле с таки коллейтом интернациональные символы ?
12 авг 13, 15:41    [14697533]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой  [new]
Andrey Blednykh
Member

Откуда:
Сообщений: 52
Ни я, и было это очень давно... А сейчас родина сказала - надо! :)
12 авг 13, 15:45    [14697554]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Andrey Blednykh
Ни я, и было это очень давно... А сейчас родина сказала - надо! :)
И как только она это сказала, русские слова превратились в мусор?
А до этого всё нормально было?
12 авг 13, 15:47    [14697568]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой  [new]
Andrey Blednykh
Member

Откуда:
Сообщений: 52
Насколько я понимаю так было всегда. Есть некие службы (написанные на c#) которые внутри себя, если я не ошибаюсь, с помощью (table.Locale = System.Globalization.CultureInfo.InvariantCulture;) переваривают это и сохраняют в Oracle вполне корректно.
12 авг 13, 15:52    [14697605]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой  [new]
Glory
Member

Откуда:
Сообщений: 104760
Andrey Blednykh
Есть некие службы (написанные на c#) которые внутри себя, если я не ошибаюсь, с помощью (table.Locale = System.Globalization.CultureInfo.InvariantCulture;) переваривают это и сохраняют в Oracle вполне корректно.

Ну так пускай они также делают и для MSSQL
12 авг 13, 15:57    [14697633]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой  [new]
Гость333
Member

Откуда:
Сообщений: 3683
DECLARE @x TABLE (a VARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS);

INSERT @x VALUES(N'Àðõèâàòîð WinRAR (òîëüêî óäàëåíèå)'), (N'Àðõèâàòîð'), (N'óäàëåíèå');

SELECT x.a, s.s
FROM @x x
     CROSS APPLY
     (   
       SELECT CAST
       (
         ( SELECT CHAR(ASCII(SUBSTRING(x.a, v.number, 1))) COLLATE Cyrillic_General_CI_AS
           FROM master.dbo.spt_values v
	       WHERE v.type = N'P' AND v.number BETWEEN 1 AND LEN(x.a)
	       ORDER BY v.number
           FOR XML PATH(''), TYPE
         ) AS nvarchar(100)
       ) AS s
     ) s;
12 авг 13, 15:59    [14697647]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой  [new]
Andrey Blednykh
Member

Откуда:
Сообщений: 52
Хотелось бы на стороне службы ограничиться лишь вызовом хранимой процедуры...
12 авг 13, 15:59    [14697649]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Гость333
INSERT @x VALUES(N'Àðõèâàòîð WinRAR (òîëüêî óäàëåíèå)'), (N'Àðõèâàòîð'), (N'óäàëåíèå');

Движок форума шалит, эта строка должна выглядеть так:
INSERT @x VALUES(N'Àðõèâàòîð WinRAR (òîëüêî óäàëåíèå)'), (N'Àðõèâàòîð'), (N'óäàëåíèå');
12 авг 13, 16:02    [14697668]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Неправильно написал, надо так:
DECLARE @x TABLE (a varchar(100) COLLATE SQL_Latin1_General_CP1_CI_AS);

DECLARE @x_decoded TABLE (a varchar(100) COLLATE Cyrillic_General_CI_AS);

INSERT @x VALUES(N'&#192;&#240;&#245;&#232;&#226;&#224;&#242;&#238;&#240; WinRAR (&#242;&#238;&#235;&#252;&#234;&#238; &#243;&#228;&#224;&#235;&#229;&#237;&#232;&#229;)'), (N'&#192;&#240;&#245;&#232;&#226;&#224;&#242;&#238;&#240;'), (N'<&#192;&#240;&#245;&#232;&#226;&#224;&#242;&#238;&#240;>&<&#243;&#228;&#224;&#235;&#229;&#237;&#232;&#229;>');

INSERT @x_decoded
SELECT s.s
FROM @x x
     CROSS APPLY
     (   
       SELECT 
       ( SELECT CHAR(ASCII(SUBSTRING(x.a, v.number, 1))) --COLLATE SQL_Latin1_General_CP1_CI_AS
         FROM master.dbo.spt_values v
	     WHERE v.type = N'P' AND v.number BETWEEN 1 AND LEN(x.a)
	     ORDER BY v.number
         FOR XML PATH(''), TYPE
       ).value('.', 'varchar(100)') AS s
     ) s;

SELECT * FROM @x_decoded;
12 авг 13, 16:11    [14697736]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Гость333
INSERT @x VALUES(N'&#192;&#240;&#245;&#232;&#226;&#224;&#242;&#238;&#240; WinRAR (&#242;&#238;&#235;&#252;&#234;&#238; &#243;&#228;&#224;&#235;&#229;&#237;&#232;&#229;)'), (N'&#192;&#240;&#245;&#232;&#226;&#224;&#242;&#238;&#240;'), (N'<&#192;&#240;&#245;&#232;&#226;&#224;&#242;&#238;&#240;>&<&#243;&#228;&#224;&#235;&#229;&#237;&#232;&#229;>');

INSERT @x VALUES(N'Àðõèâàòîð WinRAR (òîëüêî óäàëåíèå)'), (N'Àðõèâàòîð'), (N'<Àðõèâàòîð>&<óäàëåíèå>');

Сорри за спам...
12 авг 13, 16:12    [14697741]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой  [new]
Empirical
Member

Откуда:
Сообщений: 99
Andrey Blednykh
Если я не ошибаюсь абракадабра появляется как результат кодировки SQL_Latin1_General_CP1_CI_AS. К сожалению, изменить ее, возможности нет.

Тип поля varchar(255).


У меня база с такой же collation, все вставляется и отображатеся как надо (русские, французские, даже китайские иероглифы). Попробуйте изменить кодировку query to UTF8 (настройки ssms)
12 авг 13, 17:26    [14698263]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Empirical
Andrey Blednykh
Если я не ошибаюсь абракадабра появляется как результат кодировки SQL_Latin1_General_CP1_CI_AS. К сожалению, изменить ее, возможности нет.

Тип поля varchar(255).


У меня база с такой же collation, все вставляется и отображатеся как надо (русские, французские, даже китайские иероглифы). Попробуйте изменить кодировку query to UTF8 (настройки ssms)
Тип поля должен быть юникодным.
Например, NVARCHAR(255)
И при вставке перед литеральными строками не забывать букву N
12 авг 13, 17:29    [14698280]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой  [new]
ну-ну...
Guest
Empirical
Andrey Blednykh
Если я не ошибаюсь абракадабра появляется как результат кодировки SQL_Latin1_General_CP1_CI_AS. К сожалению, изменить ее, возможности нет.

Тип поля varchar(255).


У меня база с такой же collation, все вставляется и отображатеся как надо (русские, французские, даже китайские иероглифы). Попробуйте изменить кодировку query to UTF8 (настройки ssms)


...и тоже в varchar пишете?
12 авг 13, 17:31    [14698285]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой  [new]
Empirical
Member

Откуда:
Сообщений: 99
ну-ну...,

конечно в варчар, нварчар писать всегда лень
12 авг 13, 17:39    [14698341]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой  [new]
ну-ну...
Guest
Empirical,

а мне такую же картинку в ответ слабО завесить?
(выполнять в базе, где тот самый коллэйшн)

К сообщению приложен файл. Размер - 7Kb
12 авг 13, 17:49    [14698416]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой  [new]
Empirical
Member

Откуда:
Сообщений: 99
ну-ну...
Empirical,

а мне такую же картинку в ответ слабО завесить?
(выполнять в базе, где тот самый коллэйшн)


Вы выиграли, спорить не буду, вопросики там вместо великого-могучего.

Но тем не менее, взгляните на приложенный снимочек (почему не знаю, может быть база может иметь один коллейшн, колонки другой - как в MySQL):
Картинка с другого сайта.
12 авг 13, 21:28    [14698964]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой  [new]
Empirical
Member

Откуда:
Сообщений: 99
Empirical
приложенный снимочек

Да, 2008 R2.
12 авг 13, 21:33    [14698973]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой  [new]
Empirical
Member

Откуда:
Сообщений: 99
Empirical,

и китаезу могу найти (только завтра, на рабочем месте, с удаленки медленно все, нервов не хватает). ПОсмотрела - коллейшн один и тот же база-таблица-колонка.
12 авг 13, 21:39    [14698990]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой  [new]
Empirical
Member

Откуда:
Сообщений: 99
ну-ну...
Empirical,
а мне такую же картинку в ответ слабО завесить?
(выполнять в базе, где тот самый коллэйшн)


Пожалуйста:
Картинка с другого сайта.
12 авг 13, 22:05    [14699044]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой  [new]
ну-ну...
Guest
типа найдите отличие в этих двух кусках кода?
Вас снова процитировать, или как?
конечно в варчар, нварчар писать всегда лень
12 авг 13, 23:53    [14699439]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить