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

如何使用OPENROWSET BULK选项将含原生字符(如ধামুরা বন্দর)的UTF-8格式JSON文件导入SQL Server并解决乱码问题

解决UTF-8 JSON文件导入SQL Server时孟加拉语字符乱码问题

这是因为你用SINGLE_BLOB读取后直接赋值给VARCHAR(MAX),数据库会用默认代码页(非UTF-8)转换二进制内容,导致非ASCII字符乱码。而直接用N前缀赋值正常,是因为N前缀强制字符串以UTF-16(SQL Server的NVARCHAR原生编码)存储,跳过了错误的编码转换。

正确的解决方案

用SINGLE_BLOB读取原始二进制内容,再通过CONVERT函数指定UTF-8编码(代码页65001)转换为NVARCHAR(MAX),就能正确解析孟加拉语字符:

DECLARE @KettleFeed NVARCHAR(MAX)
SELECT @KettleFeed = CONVERT(NVARCHAR(MAX), BulkColumn, 65001)
FROM OPENROWSET(BULK 'D:\Json_Samples\Test.json', SINGLE_BLOB) Json

SELECT * 
FROM OPENJSON(@KettleFeed, '$') 
WITH( 
    NativeName NVARCHAR(100) N'$.NativeName' 
)

为什么这个方法有效?

  • SINGLE_BLOB会读取文件的原始二进制数据,不做任何自动编码转换,避免了默认代码页的干扰。
  • CONVERT(NVARCHAR(MAX), BulkColumn, 65001)明确告诉SQL Server用UTF-8编码解析二进制内容,转换成NVARCHAR支持的UTF-16格式,确保孟加拉语原生字符被正确识别。

关于SINGLE_NCLOB的说明

SINGLE_NCLOB要求文件是UTF-16LE(Unicode)格式,而你的文件是UTF-8,所以不需要强行转换文件格式——用上面的方法直接处理UTF-8文件更高效。

内容的提问来源于stack exchange,提问作者Bob's gaming

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 13:47:46