ald*_*ldo 2 python unicode encoding utf-8 python-3.x
在你告诉我阅读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
Run Code Online (Sandbox Code Playgroud)
现在,当我在Notepad ++中打开同一个文件并查看"编码"菜单时,它会选择"在UCS-2 Little Endian中编码"选项. 维基百科告诉我,这基本上是UTF-16编码.随你.我真的不在乎.更多的研究表明,我的编辑器在文件的前面插入了一个两字节的BOM(字节顺序标记),其值为'\ xff\xfe',表示文件编码.所以至少我知道Python抱怨的'\ xff'代码来自哪里.
所以我去网上阅读PEP 0263 - 以及其他一切 - 我尝试在这个文件的第一行添加这样的评论
# coding: utf-16
Run Code Online (Sandbox Code Playgroud)
具有各种不同的编码值,没有任何帮助. 但它无能为力,对吧?因为Python甚至没有达到我的编码声明; 它在源文件的第一个字节上窒息!
所以我真正想知道的是......
PS我甚至在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'}
>>>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1281 次 |
| 最近记录: |