将 Unicode/UTF-8 值转换为阿拉伯文本 |数据库服务器

问题描述

从 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 "
        }
    ]
}')

enter image description here

解决方法

当您运行 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