【问题标题】:curl outputs Unicode codes instead of characters for Georgiancurl 输出 Unicode 代码而不是格鲁吉亚语的字符
【发布时间】:2021-03-29 20:09:50
【问题描述】:

curl "http://XYX...&" -d "text=ვაპირებ" 此命令为格鲁吉亚语单词 (ვაპირებ) 提供以下 json 输出

{"tokens":[{"word":"\u10D5\u10D0\u10DE\u10D8\u10E0\u10D4\u10D1","count":1,"id":0,"msa":[{"lemma":"\u10D3\u10D0\u00B7\u10DE\u10D8\u10E0\u10D4\u10D1[\u10D0]/\u10DE\u10D8\u10E0","features":"V Act Pres <S-DO> <S:Nom> <DO:Dat> S:1Sg DO:3 >PRED","rid":0}]}],"startCpos":[],"endCpos":[]}

输出正确,但以 Unicode 代码“\u10D5\u10D0\u10DE\u10D8\u10E0\u10D4\u10D1”表示,而不是格鲁吉亚字符。所以,我必须另外转换它们。

echo -e "\u10D5\u10D0\u10DE\u10D8\u10E0\u10D4\u10D1" => ვაპირებ

是否可以直接通过 cUrl 命令为格鲁吉亚语输出字符库?

【问题讨论】:

  • 我不认为 curl 可以做到这一点。我认为是服务器端的 JSON 编码器以这种方式提供 JSON 响应。您只需要读取 JSON,也许使用 jq,一切都应该没问题。

标签: bash shell curl


【解决方案1】:

curl 不会进行这种转义;相反,您调用的站点必须这样做。 (在 JSON 中,"\u10D5\u10D0\u10DE\u10D8\u10E0\u10D4\u10D1" 等价于 "ვაპირებ"。显然本网站认为前者更易于使用。)

您可能需要查看该站点的文档,看看它是否支持返回"ვაპირებ" 而不是"\u10D5\u10D0\u10DE\u10D8\u10E0\u10D4\u10D1" 的选项。当然,即使是这样,它仍然需要对换行符和反斜杠等字符进行转义,所以你仍然需要处理它。

我认为你最好的选择是使用一个理解 JSON 的工具来处理它,而不是你现在正在处理它。例如,jq 理解这种表示法;如果我通过jq . 传递您的示例,我会得到:

{
  "tokens": [
    {
      "word": "ვაპირებ",
      "count": 1,
      "id": 0,
      "msa": [
        {
          "lemma": "და·პირებ[ა]/პირ",
          "features": "V Act Pres <S-DO> <S:Nom> <DO:Dat> S:1Sg DO:3 >PRED",
          "rid": 0
        }
      ]
    }
  ],
  "startCpos": [],
  "endCpos": []
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-03
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 2011-11-03
    • 1970-01-01
    • 2015-06-12
    • 2018-02-18
    相关资源
    最近更新 更多