Python CLoader and Unicode



当使用CLoader作为yaml.load的加载器时,它不会在我的json中处理Unicode。但是,当我使用默认加载器时,json 加载正常。

我可以通过捕获异常并在没有 CLoader 的情况下加载它来解决此问题。
有没有人知道解决方案的经验?

#!/usr/bin/python
import yaml
from yaml import CLoader as Loader1
from yaml import Loader
data_string = ""nickname": "Stringhere ud83dudcaf""
print "Loading with default loader"
json_data = yaml.load(data_string, Loader=Loader)
print "Loading with CLoader"
json_data = yaml.load(data_string, Loader=Loader1)

yaml.scanner.ScannerError: while parsing a quoted scalar
  in "<byte string>", line 1, column 13
found invalid Unicode character escape code
  in "<byte string>", line 1, column 27

请参阅 http://pyyaml.org/wiki/PyYAMLDocumentation

PyYAML CLoader 在引擎盖下使用 libyaml。利比亚将拒绝这种逃跑。仅支持某些u转义,但不支持构建代理项对的转义。

但是,PyYAML python解析器(由使用Loader导入的加载器使用(解析此解析,但仍然不会将其转换为Unicode字符。

YAML 1.1

/1.2 规范未明确提及代理项对。但是,由于 YAML 1.2 是 JSON 的超集,并且 JSON 支持这一点,我认为 libyaml 也应该支持这一点。(它面向 YAML 1.1,但由于它目前只会返回错误,因此添加对此的支持并没有什么坏处。

我为 libyaml 创建了一个问题:https://github.com/yaml/libyaml/issues/110

https://en.wikipedia.org/wiki/UTF-16

JSON RFC 在第 7 章中提到了代理项对:https://www.rfc-editor.org/rfc/rfc7159#section-7

最新更新