1. 程式人生 > >Python中文問題 或 SyntaxError: Non-ASCII character '\xe8' in file

Python中文問題 或 SyntaxError: Non-ASCII character '\xe8' in file

python的中文問題一直是困擾新手的頭疼問題。

如果在執行時出現SyntaxError: Non-ASCII character '\xe8' in file 是因為原始檔中有中文出現:

Python 預設的是ASCII  編碼方式,如果出現中文會出現問題,所喲必須在程式碼的第二行或第一行 顯示的宣告編碼方式(已註釋的方式,即"#"開始):
 使用utf-8編碼方式即可解決,
即把<encoding name>置換為 utf-8
# coding=<encoding name> 或者 #!/usr/bin/python # -*- coding: <encoding name> -*- 或者 #!/usr/bin/python # vim: set fileencoding=<encoding name> : 或者 # This Python file uses the following encoding: <encoding name>


Examples

    These are some examples to clarify the different styles for
    defining the source code encoding at the top of a Python source
    file:

    1. With interpreter binary and using Emacs style file encoding
       comment:

          #!/usr/bin/python
          # -*- coding: latin-1 -*-
          import os, sys
          ...

          #!/usr/bin/python
          # -*- coding: iso-8859-15 -*-
          import os, sys
          ...

          #!/usr/bin/python
          # -*- coding: ascii -*-
          import os, sys
          ...

    2. Without interpreter line, using plain text:

          # This Python file uses the following encoding: utf-8
          import os, sys
          ...

    3. Text editors might have different ways of defining the file's
       encoding, e.g.

          #!/usr/local/bin/python
          # coding: latin-1
          import os, sys
          ...

    4. Without encoding comment, Python's parser will assume ASCII
       text:

          #!/usr/local/bin/python
          import os, sys
          ...

    5. Encoding comments which don't work:

       Missing "coding:" prefix:

          #!/usr/local/bin/python
          # latin-1
          import os, sys
          ...

       Encoding comment not on line 1 or 2:

          #!/usr/local/bin/python
          #
          # -*- coding: latin-1 -*-
          import os, sys
          ...

       Unsupported encoding:

          #!/usr/local/bin/python
          # -*- coding: utf-42 -*-
          import os, sys
          ...