【问题标题】:How to save Unicode codepoint as character, not codepoint in Python如何将Unicode代码点保存为字符,而不是Python中的代码点
【发布时间】:2012-08-15 21:29:39
【问题描述】:

有没有办法将 Unicode 字符串保存到 JSON 中,从而允许 Unicode 代码点被其实际字符替换?

例如,将这样的字典移植到 JSON...:

dict1[u'N\u00e1utico'] = 2

...与其将其与代码点一起转储,是否可以将密钥作为实际字符串转储?:

Náutico

打印可以很好地表示字符,但是我只是迷路了。谢谢。

【问题讨论】:

  • 一个更重要的问题是 JSON 是否允许这样做,以及应该读取 JSON 输出的任何人都支持它。
  • 它将被移植到数据库中,然后很可能在线使用

标签: python json unicode codepoint


【解决方案1】:

任何编写 JSON 的库都将为超出标准 ASCII 范围的字符提供 unicode 代码点,任何可以读取 JSON 的库(包括浏览器)都将正确显示它。我不确定为什么您认为在 JSON 中表示字符串时需要重音字符,但您不应该这样做,并且作为提供代码点的交换格式是正确的行为。

【讨论】:

  • 拥有可读的 JSON 对于调试目的可能很方便,但作为一种交换格式,我认为它旨在假设非 ASCII 字符可能在传输过程中的某处被破坏。
  • 最后的结果是将 JSON 移植到一个最有可能在线使用的数据库中。我只是想知道是否有一种可能的方法,否则将取决于任何输出器是否能够正确读取它。你的解释在这方面真的很有帮助,谢谢!
【解决方案2】:

您的意思是包含非 ASCII 字符作为原始字符,而不是等效的 \u 转义符?如果是这样:

>>> print json.dumps({u'N\u00e1utico': 2}, ensure_ascii= False)
{"Náutico": 2}

【讨论】:

  • 这也是一个很好的答案,并且为了调试的可读性,值得了解。对于他所描述的用例,尽管他确实不需要原始值。任何有价值的网络应用程序或浏览器都会在以后需要时加载并正确显示。
猜你喜欢
  • 2012-05-10
  • 1970-01-01
  • 2011-08-04
  • 1970-01-01
  • 1970-01-01
  • 2013-04-29
  • 2018-09-20
  • 1970-01-01
  • 2016-11-24
相关资源
最近更新 更多