【问题标题】:What will be the pattern for UTF-8 in Json Schema? [closed]Json Schema 中 UTF-8 的模式是什么? [关闭]
【发布时间】:2020-05-05 14:13:02
【问题描述】:

我正在尝试匹配只能包含 UTF-8 的 JSON 文件值,否则会显示错误。 我在 python 中编写了脚本来使用 JSON 模式验证 JSON 文件。 我在 json 模式中使用了以下模式,但没有捕获所有情况:

"name":{
    "type":"string",
    "pattern":"^[a-zA-Z0-9!@#$&*_~:?()\\[\\]\\-` '.+,/\"{} \\u0080-\u9fff]*$"
    }

例如:

如果 name: '힙합성애자' 显示错误,但应该通过验证。 那么当 name: John"☮" Robert 时,它通过了验证,但它应该是失败的。

我的正则表达式应该是什么才能通过此类 UTF-8 值的验证?

【问题讨论】:

  • 匹配“UTF-8”的模式是.*。是的,这意味着任何东西。通常你正在验证解析 JSON 的结果,此时字符编码是无关紧要的。如果它不是有效的 UTF-8,它将无法通过解析阶段。
  • "힙합성애자" 和 "☮" 都是 Unicode。十六进制的 UTF-8 表示分别是“ed 9e 99 ed 95 a9 ec 84 b1 ec 95 a0 ec 9e 90 0a”和“e2 98 ae 0a”。您是否正在寻找特定的字符平面,例如可打印字符?或者过滤掉符号/表情符号?

标签: python python-3.x jsonschema json-schema-validator python-jsonschema


【解决方案1】:

验证 JSON 中的字符串“仅包含 UTF-8”的想法是没有意义的。 JSON 字符串是 Unicode 字符串;字符串 within 具有编码的 JSON 文档的想法是错误的。您已经将其解码为解码 JSON 的一部分;现在它只是 Unicode,与任何编码无关。 JSON 本身总是应该被编码为 UTF-8。所以据我所知,你想要的模式是.*

【讨论】:

  • 有什么办法可以抓住这种情况吗?姓名:约翰“☮”罗伯特,这里的名字包含表情符号
  • 因为它没有正确编码所以它需要显示为错误“☮”
  • @SaNa3819 我真的不明白你的意思。什么没有正确编码?我可以看到一个☮,所以它必须正确编码。
  • 你是说我不能给我的宝贝女儿取名☮??? kalzumeus.com/2010/06/17/…
猜你喜欢
  • 2013-03-04
  • 1970-01-01
  • 2014-12-18
  • 2016-11-15
  • 1970-01-01
  • 2012-02-25
  • 2020-11-22
  • 1970-01-01
相关资源
最近更新 更多