Python 如何从文件中获取非ASCII字母,而不必使用;腐败;?

Python 如何从文件中获取非ASCII字母,而不必使用;腐败;?,python,python-3.x,Python,Python 3.x,我想知道如何读取非ASCII编码的字母,而不让它们“损坏” 以下是娱乐: print(open("somefile.txt").read()) somefile.txt(另存为unicode) 我得到的是这样的东西: ~a 如何获取文件的原始内容?如果以cp1252的方式打开文件,则应以utf-16的方式打开 (表示UTF-16LE字节顺序标记被错误地解释为Windows-1252。) 在unix系统上,可以使用文件查看文件中的内容: ~$ file foo.txt foo.txt: Lit

我想知道如何读取非ASCII编码的字母,而不让它们“损坏”

以下是娱乐:

print(open("somefile.txt").read())
somefile.txt(另存为unicode)

我得到的是这样的东西:


~a


如何获取文件的原始内容?

如果以
cp1252
的方式打开文件,则应以
utf-16
的方式打开

表示UTF-16LE字节顺序标记被错误地解释为Windows-1252。)

在unix系统上,可以使用
文件
查看文件中的内容:

~$ file foo.txt
foo.txt: Little-endian UTF-16 Unicode text, with no line terminators
在Python中,chardet库非常适用于此:

>>> chardet.detect(open('foo.txt', 'rb').read())
{'encoding': 'UTF-16', 'confidence': 1.0, 'language': ''}

您正在以
cp1252
的方式打开文件,您应该以
utf-16
的方式打开文件

表示UTF-16LE字节顺序标记被错误地解释为Windows-1252。)

在unix系统上,可以使用
文件
查看文件中的内容:

~$ file foo.txt
foo.txt: Little-endian UTF-16 Unicode text, with no line terminators
在Python中,chardet库非常适用于此:

>>> chardet.detect(open('foo.txt', 'rb').read())
{'encoding': 'UTF-16', 'confidence': 1.0, 'language': ''}

“另存为unicode”并没有告诉您足够的信息来正确读取文件,您需要知道编码。@pvg我不太擅长编码,所以如何检查它是哪种编码?您是如何创建此文件的?典型的文本编辑器将显示编码。然后,您可以将它作为命名参数传递给
open
,它在文档中。我喜欢在记事本中创建它,保存它时,它说我不应该选择ANSI,所以我将它设置为unicode。我没有看到任何其他东西。下载sublime或记事本++或类似的东西,记事本使用了奇怪的术语。任何严肃的编辑器都只会在状态行上显示编码。“另存为unicode”并不能真正告诉您足够的信息来正确读取文件,您需要知道编码。@pvg我不太擅长编码,所以如何检查它是哪种编码?您是如何创建此文件的?典型的文本编辑器将显示编码。然后,您可以将它作为命名参数传递给
open
,它在文档中。我喜欢在记事本中创建它,保存它时,它说我不应该选择ANSI,所以我将它设置为unicode。我没有看到任何其他东西。下载sublime或记事本++或类似的东西,记事本使用了奇怪的术语。任何严肃的编辑器都会在状态行上显示编码。我对chardet只有一个问题,它说它是一个无效的模块。当我试着用“pip install chardet”安装它时,它说需求已经满足了,之后什么都不做。我对chardet只有一个问题,它说它是一个无效的模块。当我试着用“pip install chardet”安装它时,它说需求已经满足了,之后就什么也不做了。