二进制 - > UTF-8 - >串

时间:2016-03-15 20:13:21

标签: python utf-8 encode

我正在尝试理解Unicode和所有相关的东西。我制作了一个utf-8.txt文件,显然是用utf-8编码的。它有“Hello world!”内。 继承人我的工作:

f = open('utf8.txt', mode = 'r', encoding = 'utf8')
f.read()

我得到的是:'\ ufeffHello world!'前缀来自哪里?

另一次尝试:

f = open('utf8.txt', 'rb')
byte = f.read()

打印字节给出:b'\ xef \ xbb \ xbfHello world!'我假设前缀以十六进制形式出现。

byte.decode('utf8')

上面的代码再次给了我:'\ ufeffHello world!'

我做错了什么?如何从utf-8文件中检索文本到python?

感谢您的反馈!

1 个答案:

答案 0 :(得分:6)

您的utf-8.txt编码为utf-8-bom,与utf-8不同。对于utf-8-bom文件,'\ uFEFF'被写入文件的开头。不要使用Dim sample = "123- ABCDEFG" newTxt = sample.Replace(" "c, "").Replace("-"c, "") ,请尝试encoding = 'utf8'

encoding = 'utf-8-sig'