2015-07-22 103 views
1

这是我的源文件的顶部:Python源“编码未声明”

# -*- coding: UTF-16 -*- 
import re 
import unittest 

尽管包括在文件的顶部声明,当我运行此我得到一个错误:“非ASCII在第1行的文件ScrapeEdgar/parsers/parser8kex101_tests.py中有字符'\ xff',但没有声明编码;详情请参阅http://www.python.org/peps/pep-0263.html“。

下面是完整的输出:

usau810195:ScrapeEdgar reedn$ python -m unittest ScrapeEdgar.parsers.parser8kex101_tests 
Traceback (most recent call last): 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 162, in _run_module_as_main 
    "__main__", fname, loader, pkg_name) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 72, in _run_code 
    exec code in run_globals 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/__main__.py", line 12, in <module> 
    main(module=None) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/main.py", line 94, in __init__ 
    self.parseArgs(argv) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/main.py", line 149, in parseArgs 
    self.createTests() 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/main.py", line 158, in createTests 
    self.module) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/loader.py", line 128, in loadTestsFromNames 
    suites = [self.loadTestsFromName(name, module) for name in names] 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/loader.py", line 91, in loadTestsFromName 
    module = __import__('.'.join(parts_copy)) 
    File "ScrapeEdgar/parsers/parser8kex101_tests.py", line 1 
SyntaxError: Non-ASCII character '\xff' in file ScrapeEdgar/parsers/parser8kex101_tests.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details 
+0

你有没有试过'#coding = utf-8'? –

回答

0

Python源文件不支持UTF-16编码。

任何编码,它允许处理在上面指出的被允许作为源代码编码 方式的前两行,这 包括ASCII兼容编码以及某些 多字节编码如SHIFT_JIS。它不包括 编码,对所有字符使用两个或多个字节,例如 UTF-16。其原因是保持标记器中的编码 检测算法简单。

请参阅PEP 0263

希望这会有所帮助。