Распечатка символов рисования коробки (extended-ascii) в SSMS - PullRequest
0 голосов
/ 20 декабря 2018

Я хочу напечатать символ рисования коробки в сообщениях вывода в SSMS.Он включает в себя такие символы, как, например, ║ или ░ или ╬.Полный список символов, которые у меня на уме, можно найти здесь .

Когда я пытаюсь сделать следующее: PRINT '╬' возвращает просто +, пока я ожидаю .

Когда я выполняю SELECT ASCII('╬'), он возвращает 43, но когда я выполняю SELECT CHAR(43), он возвращает (что неудивительно) +.

Это связано с сопоставлением?Если так, как я могу найти, какое сопоставление использовать?

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Простой литерал в SQL-сервере - по умолчанию тип CHAR / VARCHAR.Этот тип 1-байтовый расширенный ASCII : нижняя половина - набор символов обычный латинский , верхняя половина зависит от параметров сортировки.Это означает, что поддержка нестандартных символов очень мала.

Второй тип символов - NCHAR / NVARCHAR.Это (почти) юникод, очень близкий к utf-16.Фактическое кодирование двухбайтовое кодирование UCS-2.Поддержка нестандартных символов (почти) завершена.Любой литерал, начинающийся с N, обрабатывается как NCHAR / NVARCHAR:

Попробуйте:

SELECT '╬',N'╬';

DECLARE @str1a VARCHAR(10)='╬';
DECLARE @str1b VARCHAR(10)=N'╬'; --The NVARCHAR literal is changed to VARCHAR
DECLARE @str2 NVARCHAR(10)=N'╬'; 

SELECT @str1a,@str1b,@str2;

Функции для получения кода и наоборот- чтобы получить персонажа тоже два сложения:

SELECT ASCII('a'), UNICODE(N'a')
      ,ASCII('╬'), UNICODE(N'╬')
      ,CHAR(97),NCHAR(97),CHAR(43),NCHAR(43)
      ,NCHAR(9580)--does not work with `CHAR`
0 голосов
/ 20 декабря 2018

Вам нужно распечатать затем в Unicode, то есть префикс их с N:

PRINT N'╬'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...