Json экранировать юникод в SQL Server

Я получил строку JSon с escape-символами Unicode

\u041e\u043f\u043e\u0440\u0430 \u0448\u0430\u0440\u043e\u0432\u0430\u044f VW GOLF

Я знаю что 4 цифры после \u шестнадцатеричный код символа Юникод

Итак, вот как я расшифровал эти строки

ALTER FUNCTION dbo.Json_Unicode_Decode(@escapedString VARCHAR(MAX))
RETURNS VARCHAR(MAX)
AS 
BEGIN
    DECLARE @pos INT = 0,
            @char CHAR,
            @escapeLen TINYINT = 2,
            @hexDigits TINYINT = 4

    SET @pos = CHARINDEX('\u', @escapedString, @pos)

    WHILE @pos > 0
    BEGIN
        SET @char =  NCHAR(CONVERT(varbinary(8), '0x' + SUBSTRING(@escapedString, @pos + @escapeLen, @hexDigits), 1))
        SET @escapedString = STUFF(@escapedString, @pos, @escapeLen + @hexDigits, @char)
        SET @pos = CHARINDEX('\u', @escapedString, @pos)
    END

    RETURN @escapedString
END

Есть ли более деликатные способы их расшифровки?

0 ответов

Другие вопросы по тегам