我有一个文本文件,其中填充了1799 (original length string)
928 (51.58% compression)
1388
1712
918 (51.028% compression)
的unicode字符,但python似乎不喜欢它们。
但是如果我用"\ud83d\udca5"
替换它,这似乎是他的python转义样式(Charbase),它就可以了。
是否有解决方案将它们全部转换为u'\U0001f4a5'
转义格式,而不是python可以理解的?
感谢。
答案 0 :(得分:0)
您正在混合使用Unicode和编码的字符串。 u'\U0001f4a5'
是一个Unicode对象,Python用于处理字符串的内部数据类型。 (在Python 3中,u
是可选的,因为现在所有字符串都是Unicode对象。)
另一方面,文件使用编码。 UTF-8是最常见的一种,但它只是将Unicode对象存储在面向字节的文件或流中的一种方法。打开这样的文件时,需要指定编码,以便Python可以将字节转换为有意义的Unicode对象。
在您的情况下,您似乎需要使用UTF-16
编解码器而不是UTF-8
打开文件。
with open("myfile.txt", encoding="utf-16") as f:
s = f.read()
如果编解码器实际上是UTF-16
,将为您提供正确的内容。如果看起来不正确,请尝试"utf-16-le"
或"utf-16-be"
。