len()返回字符串的错误数字



我在命令行上运行一个简单的脚本:echo "Alex "比;alex.txt

len(open("alex.txt").read()) returns 16 instead of 5

当我运行open("alex.txt").read()时,我得到:

ÿþAx00lx00ex00xx00 x00nx00nx00

有什么问题吗?

文件中的字节数和字符串中的字符数通常是不同的。

坚持使用有限的字符集,例如ASCII,您可以得到一对一,但现代编程语言比这更复杂,并且至少试图服务于更广泛的书面语言。

通常需要知道编码是什么。您可能不会在文件本身中得到任何指示。

读取字节后,需要将这些字节编码为字符串:

open("alex.txt","rb").read().decode('utf-16')

您可以让open为您做这些,这可能更可靠:

open("file.txt",encoding='utf-16').read()

现在,如果您想更花哨一点,并从BOM中获得编码,您可以在这里查看答案:

使用Python中的BOM字符读取Unicode文件数据

相关内容

  • 没有找到相关文章

最新更新