问题描述
从 API 获取 JSON。
{
"data":[
{
"id":"1","name_ar":"\u0647\u0627\u0646\u064a \u0639\u0628\u062f \u0645\u0633\u0644\u0645","name_en":"Hani Moussallem"
},{
"id":"2","name_ar":"\u0633\u0639\u0648\u062f \u0639\u0628\u062f\u0627\u0644\u0639\u0632\u064a\u0632 \u0628\u0627\u062d\u064a\u062f\u0631\u0647","name_en":"Saud Abdulaziz Bahaidarah "
}
]
}
实际上是如下的阿拉伯文字:
{
"data": [
{
"id": "1","name_ar": "هاني عبد مسلم","name_en": "Hani Moussallem"
},{
"id": "2","name_ar": "سعود عبدالعزيز باحيدره","name_en": "Saud Abdulaziz Bahaidarah "
}
]
}
获取编写以下 sql 查询但获取 Unicode 值而不是阿拉伯语的阿拉伯语文本。如何将这些 Unicode/UTF8 值转换为阿拉伯语?
这里是 sql 脚本:
SELECT * FROM OPEnjsON(N'{
"data":[
{
"id":"1","name_en":"Saud Abdulaziz Bahaidarah "
}
]
}')
解决方法
当您运行 OPENJSON 时,您只是在解析 JSON 文档的顶级。 value
作为未解析的 JSON 字符串返回。如果您解析到正确的级别,您将得到正确解析的 unicode 值。 EG
SELECT * FROM OPENJSON(N'{
"data":[
{
"id":"1","name_ar":"\u0647\u0627\u0646\u064a \u0639\u0628\u062f \u0645\u0633\u0644\u0645","name_en":"Hani Moussallem"
},{
"id":"2","name_ar":"\u0633\u0639\u0648\u062f \u0639\u0628\u062f\u0627\u0644\u0639\u0632\u064a\u0632 \u0628\u0627\u062d\u064a\u062f\u0631\u0647","name_en":"Saud Abdulaziz Bahaidarah "
}
]
}','$.data')
with (
id int,name_ar nvarchar(200),name_en nvarchar(200)
)
输出
id name_ar name_en
----------- ----------------------------- -------------------------------
1 هاني عبد مسلم Hani Moussallem
2 سعود عبدالعزيز باحيدره Saud Abdulaziz Bahaidarah