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

SQL Server 2019中OPENROWSET解析JSON特殊字符转码问题咨询

SQL Server 2019解析JSON特殊字符乱码的解决方案

针对你遇到的OPENROWSET读取JSON时特殊字符(如Ó、Ñ)被错误转换为Ñ的问题,以下是几个可行的解决办法:

办法1:使用SINGLE_NCLOB替代SINGLE_CLOB

SINGLE_NCLOB会以Unicode格式读取文件,能更好兼容UTF-8编码的特殊字符,无需额外COLLATE转换即可正确解析:

SELECT d.*
FROM OPENROWSET (BULK '\\drive\data.json', SINGLE_NCLOB) X
CROSS APPLY OPENJSON (X.BulkColumn, '$.Data')
WITH ([N] NVARCHAR(250)) AS d

办法2:指定CODEPAGE参数强制按UTF-8读取

SQL Server 2016及以上版本支持通过CODEPAGE = 65001(UTF-8对应的代码页)明确指定文件编码,确保读取时不会出现编码转换错误:

SELECT d.*
FROM OPENROWSET (BULK '\\drive\data.json', SINGLE_CLOB, CODEPAGE = '65001') X
CROSS APPLY OPENJSON (X.BulkColumn, '$.Data')
WITH ([N] NVARCHAR(250)) AS d

办法3:先读取为二进制再转换为NVARCHAR

通过读取为VARBINARY(MAX)避免中间编码转换,再显式转换为UTF-8编码的NVARCHAR,彻底规避编码不匹配问题:

SELECT d.*
FROM OPENROWSET (BULK '\\drive\data.json', SINGLE_BLOB) X
CROSS APPLY OPENJSON (CAST(X.BulkColumn AS NVARCHAR(MAX)) COLLATE Latin1_General_100_CI_AS_SC_UTF8, '$.Data')
WITH ([N] NVARCHAR(250)) AS d

补充说明

如果JSON文件本身带有BOM(字节顺序标记),上述方法依然有效;若文件编码不是UTF-8,需要对应调整CODEPAGE参数(比如GBK对应936)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 10:25:00