You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server数据库中如何将Unicode转义值转换为UTF-8正确字符?

MSSQL Server 2017 转换\u格式Unicode转义序列为可读字符方案

推荐方案:原生JSON解析(性能最优,无自定义代码)

SQL Server 2017 原生支持JSON语法解析,JSON标准默认兼容\uXXXX格式的Unicode转义规则,不需要编写循环、拆分逻辑,直接调用内置JSON_VALUE函数即可自动完成转义。

单值验证代码

你给出的示例值可以直接用以下语句测试转换效果:

SELECT JSON_VALUE('"' + N'\u039b \u041e \u0422 \u0422 \u0410' + '"', '$') AS ConvertedResult

转换后输出:Λ О Т Т А

表字段批量转换

查询表中name列的转义结果时,需要先替换字符串内的双引号,避免JSON结构解析报错:

SELECT
    name AS OriginalEscapeValue,
    JSON_VALUE('"' + REPLACE(name, '"', '\"') + '"', '$') AS ReadableValue
FROM 你的目标表名

备选方案:自定义标量函数解析(适配特殊场景)

如果待转换字符串包含JSON不兼容的控制字符,导致JSON_VALUE返回NULL,可以编写自定义函数逐段匹配转义序列,将\u后的4位十六进制码位转为整数后,通过NCHAR()函数拼接为正常字符。

函数定义代码

CREATE OR ALTER FUNCTION dbo.DecodeUnicodeEscape(@input NVARCHAR(MAX))
RETURNS NVARCHAR(MAX)
AS
BEGIN
    DECLARE @result NVARCHAR(MAX) = N''
    DECLARE @cursor INT = 1
    DECLARE @totalLen INT = LEN(@input)
    WHILE @cursor <= @totalLen
    BEGIN
        -- 识别\u开头的转义片段
        IF SUBSTRING(@input, @cursor, 2) = N'\u' AND @cursor + 5 <= @totalLen
        BEGIN
            DECLARE @hexSegment CHAR(4) = SUBSTRING(@input, @cursor + 2, 4)
            -- 校验片段为合法十六进制值后执行转换
            IF @hexSegment NOT LIKE '%[^0-9a-fA-F]%'
            BEGIN
                SET @result += NCHAR(CONVERT(INT, CONVERT(VARBINARY(4), '0x' + @hexSegment, 1)))
                SET @cursor += 6
                CONTINUE
            END
        END
        -- 非转义字符直接拼接
        SET @result += SUBSTRING(@input, @cursor, 1)
        SET @cursor += 1
    END
    RETURN @result
END

函数调用方式

SELECT
    name AS OriginalEscapeValue,
    dbo.DecodeUnicodeEscape(name) AS ReadableValue
FROM 你的目标表名

注意事项

  • 所有Unicode字符串常量前必须添加N前缀,避免隐式转换为非Unicode编码造成字符丢失
  • SQL Server的nvarchar类型原生存储UTF-16编码的Unicode字符,转换完成后即为正确的可读字符;如果需要输出UTF-8编码的结果,在客户端读取、导出文件时指定编码为UTF-8即可,无需在数据库层面做额外编码转换
  • 如果转换后显示为方框或乱码,检查查询客户端使用的字体是否支持对应字符集(如希腊字母、西里尔字母需要字体包含对应字形)

内容的提问来源于stack exchange,提问作者rotem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 14:03:19