我正在尝试用实际字符替换escpaed Unicode字符:
string = "\\u00c3\\u00a4"
print(string.encode().decode("unicode-escape"))
预期输出为ä
,实际输出为ä
。
答案 0 :(得分:2)
我不确定@melpomene的“知道他们在做什么”的标准是什么,但是以下解决方案具有worked previously, for example for decoding broken Hebrew text:
("\\u00c3\\u00a4"
.encode('latin-1')
.decode('unicode_escape')
.encode('latin-1')
.decode('utf-8')
)
输出:
'ä'
其工作原理如下:
'\'
,'u'
,'0'
,'0'
,'c'
等的字符串被转换为字节,使用太疯狂的8位编码(只要正确地处理ASCII字符,哪一个都不重要)'\u00c3'
转义解释为Unicode代码点U + 00C3(带波浪号的拉丁文大写字母A,'Ã')。从您的代码的角度来看,这是无稽之谈,但是当再次用ISO-8859-1
/ 'latin-1'
进行编码时,此unicode代码点具有正确的字节表示,所以... 'latin-1'
再次对其进行编码再次,与链接文章中的相同:在投入大量精力修复损坏的文本之前,您可能希望尝试修复以这种奇怪方式进行编码的部分代码。