我有一个.txt
文件,在£
中有磅符号。当我使用filename.read()
时,它会打印出应有的井号,但它也会打印出另一个我没有添加的字母,即Â
有人知道这是怎么回事吗?
文件编码为UTF-8,但读取为(可能)Windows-1252。
两个字符的原因是UTF-8是多字节编码,井号编码为C2 A3
,但是Windows-1252是单字节编码,井号仅编码为A3
。C2
在Windows-1252中是Â
.
的例子:
>>> with open('test.txt','w',encoding='utf8') as f:
... f.write('£')
...
1
>>> with open('test.txt') as f: # default encoding...on windows usually Windows-1252
... print(f.read())
...
£
用UTF-8编码打开文件:
>>> with open('test.txt',encoding='utf8') as f:
... print(f.read())
...
£
如果符号在源代码中,请确保Visual Studio code已配置为UTF-8开源。