在你告诉我读PEP 0263之前,继续读。。。
我找不到任何详细说明Python 3源文件支持哪些文件编码的文档。
我找到了数百(数千?)关于如何在源文件顶部声明源文件的编码的问题、答案、帖子、电子邮件等。但是没有一个回答我的问题。忍耐一下,想象一下做(或实际尝试)以下事情:
print('Hello, world!')
)以下是我得到的输出:
E:\Temp>python --version
Python 3.4.1
E:\Temp>python "hello.py"
File "hello.py", line 1
SyntaxError: Non-UTF-8 code starting with '\xff' in file hello.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
现在,当我在记事本中打开同一个文件并查看“Encoding”菜单时,它选择了“Encode in UCS-2 Little Endian”。维基百科告诉我这基本上是UTF-16编码。无论什么我真的不在乎。更多研究表明,我的编辑器在文件前面插入了一个两字节的BOM(字节顺序标记),其值为“\xff\xfe”,以指示文件编码。所以至少我知道Python抱怨的“\xff”代码来自哪里。
所以我去阅读PEP 0263和其他关于它的东西在网上,我试着在文件的第一行添加这样的注释
# coding: utf-16
使用各种不同的编码值,但没有任何帮助。但这没用,对吧?因为Python甚至没有达到我的编码声明的程度;它被源文件的第一个字节阻塞了!
所以我真正想知道的是。。。
P. S.我甚至在StackOverflow上发现了另一个问题,这似乎是我遇到的确切问题,但它被关闭了——在我看来是错误的——作为一个重复。:(
---编辑---
有人问我的“编译选项”。这里有一些输出。也许会有帮助?
E:\Temp>python
Python 3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 10:38:22) [MSC v.1600 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sysconfig
>>> print( sysconfig.get_config_vars() )
{'EXT_SUFFIX': '.pyd', 'srcdir': 'C:\\Python34', 'py_version_short': '3.4', 'base': 'C:\\Python34', 'prefix': 'C:\\Python34', 'projectbase': 'C:\\Python34', 'INCLUDEPY': 'C:\\Python34\\Include', 'platbase': 'C:\\Python34', 'py_version_nodot': '34', 'exec_prefix': 'C:\\Python34', 'EXE': '.exe', 'installed_base': 'C:\\Python34', 'SO': '.pyd', 'installed_platbase': 'C:\\Python34', 'VERSION': '34', 'BINLIBDEST': 'C:\\Python34\\Lib', 'LIBDEST': 'C:\\Python34\\Lib', 'userbase': 'C:\\Users\\alonghi\\AppData\\Roaming\\Python', 'py_version': '3.4.1', 'abiflags': '', 'BINDIR': 'C:\\Python34'}
>>>
源编码必须是:
>
所讨论的Python版本支持的编码。(这因版本和平台而异,例如,您只能在Windows上获得mbcs
。)
松散的ASCII兼容,足以使用ASCII
读取#编码:
声明,这是读取任何声明之前的初始源编码。参见PEP0263“概念”第1项。
Windows错误地将其称为Unicode(UTF-16LE)的编码与ASCII不兼容(通常情况下,您应该尽量避免使用大量问题)。Python需要特殊的编码特定支持来检测UTF-16源文件,此功能目前已被拒绝。
您应该使用的#编码:
几乎总是UTF-8。
是否有MIP SDK支持的文件扩展名的完整列表? 我能够在MIPSDK中找到一个模糊的定义-文件处理程序概念,然后是AIP统一标记客户端和AIP经典客户端的定义,但没有特定于MIPSDK。 例如,我在处理微软发布者 (.pub) 文件时收到以下错误:
文档(兼容Word):doc/dot/wps/wpt/docx/dotx/docm/dotm 表格(兼容Excel):xls/xlt/et/xlsx/xltx/csv/xlsm/xltm 幻灯片(兼容PowerPoint):ppt/pptx/pptm/ppsx/ppsm/pps/potx/potm/dpt/dps
问题内容: 是的,我知道FAQ会假装回答此问题,但实际上并非如此。相反,它指示您从源代码构建项目(并且构建说明非常复杂)。那种打败了整个观点:) 让我们省去世界上每个人的麻烦,即不必再构建另一个开源项目,以了解它是否真正解决了他们的问题。Xuggler支持哪些编解码器? 问题答案: FAQ不能回答这个问题的原因是,随着我们发布新版本,它会不断变化,并且要使文档中的列表保持最新状态会花费很长时间。但
问题内容: 我试图在Windows计算机上使用Python 3.2编写一个简单的CSV文件,但是我没有运气。从Python 3.2 的csv模块文档中: 产生一个文件,该文件的每一行都以字节序列结尾,因此当您使用MS Excel等打开文件时,每行看起来都有一个多余的空行。这不是“ CSV文件”。 请注意,如果我在Python 3.2中尝试相同的Python 2.7示例(最大的区别在于文件模式与vs
我的android应用程序中有很多未使用的图像。这些映像被放置在项目根目录的单独文件夹中。它们不会在项目中的任何地方使用,但我需要保留它们。 我关心的是,这些未使用的映像会被包含在apk文件中吗?因为有很多,并且增加了apk文件的大小。
问题内容: 许多Swing组件都支持嵌入式HTML,但是我找不到有关该主题的任何官方文档。(Sun页面上有关HTML的所有内容似乎都针对JEditorPane) 因此:Swing组件支持哪些HTML标签? 编辑: 尽管我说我缺少“官方文档”,但我也想要任何“非官方”文档。 问题答案: 正如Software Monkey所说,Swing支持HTML 3.2(Wilbur)。您可以在以下位置找到此过时