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

OPENJSON读取JSON文件时Unicode字符乱码问题求助

解决OPENROWSET读取JSON时的Unicode乱码问题

问题原因

你遇到的乱码是因为使用 SINGLE_CLOB 参数读取UTF-8编码的JSON文件导致的:SINGLE_CLOB 默认将文件按ANSI编码解析,无法正确识别UTF-8格式的非ASCII Unicode字符,最终造成字符显示错乱。


解决方案1:使用SINGLE_NCLOB直接读取Unicode数据

将OPENROWSET中的SINGLE_CLOB替换为SINGLE_NCLOB,它会以Unicode(UTF-16)格式读取文件,完整保留原JSON中的特殊字符:

SELECT c.*
FROM OPENROWSET (BULK N'C:\countries-states-cities-database-master\countries.json', SINGLE_NCLOB) as j
CROSS APPLY OPENJSON(BulkColumn)
WITH
(
    id int ,
    name nvarchar(256),
    iso3 char(3),
    numeric_code INT,
    iso2 char(2),
    phonecode nvarchar(256),
    capital nvarchar(256),
    currency nvarchar(255),
    currency_name nvarchar(255),
    currency_symbol nvarchar(255),
    tld nvarchar(255),
    native nvarchar(255),
    region nvarchar(255),
    subregion nvarchar(255),
    timezones nvarchar(max),
    translations nvarchar(max),
    latitude decimal(10,8),
    longitude decimal(11,8),
    emoji nvarchar(191),
    emojiU nvarchar(191),
    created_at datetime,
    updated_at datetime,
    flag INT,
    wikiDataId nvarchar(255) 
) AS c

解决方案2:通过编码转换处理UTF-8文件(SQL Server 2016+)

如果需要兼容特定场景,也可以保留SINGLE_CLOB,但将读取的字节流通过CONVERT函数按UTF-8编码(代码页65001)转换为NVARCHAR(MAX):

SELECT c.*
FROM OPENROWSET (BULK N'C:\countries-states-cities-database-master\countries.json', SINGLE_CLOB) as j
CROSS APPLY OPENJSON(CONVERT(NVARCHAR(MAX), j.BulkColumn, 65001))
WITH
(
    id int ,
    name nvarchar(256),
    iso3 char(3),
    numeric_code INT,
    iso2 char(2),
    phonecode nvarchar(256),
    capital nvarchar(256),
    currency nvarchar(255),
    currency_name nvarchar(255),
    currency_symbol nvarchar(255),
    tld nvarchar(255),
    native nvarchar(255),
    region nvarchar(255),
    subregion nvarchar(255),
    timezones nvarchar(max),
    translations nvarchar(max),
    latitude decimal(10,8),
    longitude decimal(11,8),
    emoji nvarchar(191),
    emojiU nvarchar(191),
    created_at datetime,
    updated_at datetime,
    flag INT,
    wikiDataId nvarchar(255) 
) AS c

内容的提问来源于stack exchange,提问作者Imran Qadir Baksh - Baloch

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 21:40:20