作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 json 文件中有以下文本:
"\u00d7\u0090\u00d7\u0097\u00d7\u0095\u00d7\u0096\u00d7\u00aa
\u00d7\u00a4\u00d7\u0095\u00d7\u009c\u00d7\u0092"
text = "\u00d7\u0090\u00d7\u0097\u00d7\u0095\u00d7\u0096\u00d7\u00aa
\u00d7\u00a4\u00d7\u0095\u00d7\u009c\u00d7\u0092".encode('unicode-escape')
print(text)
b'\\xd7\\x90\\xd7\\x97\\xd7\\x95\\xd7\\x96\\xd7\\xaa \\xd7\\xa4\\xd7\\x95\\xd7\\x9c\\xd7\\x92'
b'\\xd7\\x90\\xd7\\x97\\xd7\\x95\\xd7\\x96\\xd7\\xaa \\xd7\\xa4\\xd7\\x95\\xd7\\x9c\\xd7\\x92'
text = b'\xd7\x90\xd7\x97\xd7\x95\xd7\x96\xd7\xaa \xd7\xa4\xd7\x95\xd7\x9c\xd7\x92'
text.decode('utf-8')
最佳答案
此字符串不“代表”希伯来语文本(至少不是 unicode 代码点、UTF-16、UTF-8 或任何众所周知的方式)。相反,它代表了一个 UTF-16 代码单元序列,这个序列主要由乘法符号、货币符号和一些奇怪的控制字符组成。
看起来原始字符数据已经用一些奇怪的编码组合进行了多次编码和解码。
假设这是字面上保存在您的 JSON 文件中的内容:
"\u00d7\u0090\u00d7\u0097\u00d7\u0095\u00d7\u0096\u00d7\u00aa \u00d7\u00a4\u00d7\u0095\u00d7\u009c\u00d7\u0092"
(jsonInput
.encode('latin-1')
.decode('raw_unicode_escape')
.encode('latin-1')
.decode('utf-8')
)
'אחוזת פולג'
.encode('latin-1').decode('raw_unicode_escape')
步骤,因为 JSON 反序列化器已经为您解释了转义序列。也就是说,在 JSON 反序列化器加载文本元素后,只需将其编码为
latin-1
就足够了。然后将其解码为
utf-8
.这是有效的,因为
latin-1
(ISO-8859-1) 是一种 8 位字符编码,与 unicode 的前 256 个代码点完全对应,而您奇怪的损坏文本将 UTF-8 编码的每个字节编码为 UTF-16 代码的 ASCII 转义单元。
latin-1
不能正常工作了。请不要将此转换应用于您的 JSON 文件,除非 JSON 本身只包含 ASCII,否则只会让一切变得更糟。
关于python-3.x - 将 Unicode Escape 转换为希伯来语文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52457095/
我是一名优秀的程序员,十分优秀!