Converting Surrogate Pairs to Normal String in Python
This question寻求一种将包含代理对的Python Unicode字符串转换为标准字符串的方法表示。目标是获得可理解的 Unicode 字符或标准化的十六进制格式。
提供的代码片段提供了一个 Python 字符串,其中包含表示表情符号的代理对:
emoji = "This is \ud83d\ude4f, an emoji."
要解决这个问题,区分文字和文字至关重要磁盘上 JSON 文件中的代理项对字符串(6 个字符)和内存中的单字符代理项对字符串(1 个字符)。
如果字符串是在 Python 源代码中找到的单字符代理项对(例如如所提供的示例),它表明上游存在潜在的错误。如果遇到这种情况并且无法解决,可以使用 surrogatepass 错误处理程序:
"\ud83d\ude4f".encode('utf-16', 'surrogatepass').decode('utf-16')
这将输出对应的Unicode字符,表示为问号(?):
'?'
对于磁盘上 JSON 文件中的文字代理对字符串,加载 JSON 数据后不应出现代理对:
ascii(json.loads(r'"\ud83d\ude4f"'))
这将输出标准化的Unicode 字符的十六进制格式:
'\U0001f64f'
理解这种区别对于在 Python 中处理代理对并将其转换为可用格式至关重要。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3