1. 程式人生 > >Python的編碼註釋# -*- coding:utf-8 -*-

Python的編碼註釋# -*- coding:utf-8 -*-

如果要在python2的py檔案裡面寫中文,則必須要新增一行宣告檔案編碼的註釋,否則python2會預設使用ASCII編碼。
# -*- coding:utf-8 -*-

問題就來了,為什麼要如此宣告?

首先請參考python的PEP http://www.python.org/dev/peps/pep-0263/

概要如下

1.必須將編碼註釋放在第一行或者第二行

2.可選格式有

# coding=<encoding name>

          #!/usr/bin/python
          # -*- coding: <encoding name> -*-

          #!/usr/bin/python
          # vim: set fileencoding=<encoding name> :

但是再往下看,發現其實只要註釋裡面有coding 和對應的編碼就可以了,例如
          #!/usr/bin/python
          # vim: set fileencoding=<encoding name> :

所以搞了半天對最標準的做法也有點糊塗了。

後來想了想,看了下VIM中對python的語法高亮檔案,裡面把如下的正則表示式確定為編碼宣告

\%^.*\(\n.*\)\?#.*coding[:=]\s*[0-9A-Za-z-_.]\+.*$

對於這個正則有些有點看不懂,但是大致如下必須有coding:[編碼]或者coding=[編碼]才行,這個應該可以視作為標準的宣告方式吧。

但是為什麼通常這種方式呢?

# -*- coding:utf-8 -*-

答案在PEP-0263裡面有所提及,那就是Emacs等編輯器使用這種方式進行編碼宣告。

話說PEP裡面很多東西都是很值得參考的畢竟可以知道為什麼程式這樣設計。

相關參考

PEP-0263

http://www.python.org/dev/peps/pep-0263/

vim語法檔案編寫總結

http://www.cnblogs.com/kohpoll/archive/2012/08/04/2623483.html

# -*- coding: UTF-8 -*- 這是個註釋嗎?

http://bbs.chinaunix.net/thread-590066-1-1.html

相關推薦

Python編碼註釋# -*- coding:utf-8 -*-

如果要在python2的py檔案裡面寫中文,則必須要新增一行宣告檔案編碼的註釋,否則python2會預設使用ASCII編碼。 # -*- coding:utf-8 -*- 問題就來了,為什麼要如此宣告? 首先請參考python的PEP http://www.python.

Python編碼註釋# -*- coding:utf-8 -*- (即在py中寫中文)

自動解決pycharm下,中文輸出的問題 - 偏執狂xj的個人空間 - 開源中國社群  http://my.oschina.net/longmaox/blog/180745 因為編碼的原因,如果直接用: ? 1 print "你好!";

Python程序中#-*-coding: UTF-8 -*-的作用

world! gif 中文 text 技術 odi 支持 程序 默認 1.通常我們在pycharm中寫程序的時候會寫上#-*coding: UTF-8 -*- 如: #!/usr/bin/env python3#-*-coding: UTF-8 -*-#Author xia

Python編碼UNICODE GBK UTF-8字符集轉換的正確姿勢

規範 指令碼檔案編碼 由於需要經常性使用到中文字元,因此Python指令碼新建後,請在頭部新增程式碼: # coding: utf-8 或者為pycharm設定程式碼模版,這樣每次新建Python檔案時會自動帶上以上程式碼。如果不新增,即使中文字

Python中關於coding=utf-8以及中文字元前加u的解釋

寫了很久的Python了,每次寫之前都要在開頭加上coding=utf-8,只知道是設定編碼格式,但並沒有太在意,今天在寫socket程式設計時才發現編碼格式的重要性。 一、關於開頭coding=utf-8 開頭的coding=utf-8和coding:utf-8的作用是一

【轉載】關於Python腳本開頭兩行的:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 – 指定文件編碼類型

ron 標識 精確 log 解析器 開始 html weight .org 下面的內容來自:http://www.cnblogs.com/blueskylcc/p/5332642.html, 對方也是轉的,不過沒有找到轉載的出處; 1、#!/usr/bin/python

[eclipse]添加python默認模板,在首行添加編碼方式(# -*- coding: utf-8 -*-)

編碼方式 window pytho 編碼 分享圖片 技術分享 eclips 方式 pre 1、從eclipse的windows->preference 2、參照如下圖,添加指定的utf-8編碼方式 [eclipse]添加python默認模板,在首行添加編碼方式(#

[Python]編碼宣告:是coding:utf-8還是coding=urf-8

      推薦: #!/usr/bin/env python3 # -*- coding: utf-8 -*-     我們知道在Python原始碼的標頭檔案中要宣告編碼方式,如果你不只是會用到ascii碼,很多人都寫得都有點差別: #co

python中字元編碼:coding utf-8, unicde, defaultencoding, UnicodeDecodeError, UnicodeEncodeError

2.位元組與字元 計算機儲存的任何資料,包括各種文字、圖片、音視訊檔案等等,實際上都是一串二進位制數字01位元組序列組成的。相信大家都知道,一個位元組Byte(B)是8個位元bit(b)。 而字元,自然就是符號了。比如說二十六個英文字母,阿拉伯數字,以及在pyt

python在gbk編碼轉換成utf-8時亂碼問題

例項網站:http://www.ip138.com/ips138.asp?ip=124.24.13.241&action=4 #專案爬蟲,環境python-下載匯入requests、lxml包 #url時是查ip位置的介面 url_1='http://www.ip1

王權富貴出錯集:Python指令碼開頭兩行的:#!/usr/bin/env python和# -*- coding: utf-8 -*-的作用

1.#!/usr/bin/env python 是用來說明指令碼語言是 python 的 是要用 /usr/bin下面的程式(工具)python,這個直譯器,來解釋 python 指令碼,來執行 python 指令碼的。     2、# -*- coding:

關於Python文件讀取UTF-8編碼檔案問題

引用codecs模組,來判斷前三個位元組是否為BOM_UTF8。如果是,則剔除\xef\xbb\xbf位元組 import codecs def download_ipurl(self,destpath): try: f = open(destpath,'r')

為什麼python文件要前加 # coding=utf-8

因為如果不加編碼方式,在python文件中加中文註釋的時候,會有下列報錯 File "encode.py", line 5 SyntaxError: Non-ASCII character '\xe7

Python中的 #!/usr/bin/python 和 # -*- coding: utf-8 -*-

#!/usr/bin/python 是用來說明指令碼語言是python的 是要用/usr/bin下面的程式(工具)python,這個直譯器,來解釋python指令碼,來執行python指令碼的。 # -*- coding: utf-8 -*- 是用來指定檔案編碼為

關於Python指令碼開頭兩行的:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 – 指定

#!/usr/bin/python 是用來說明指令碼語言是python的 是要用/usr/bin下面的程式(工具)python,這個直譯器,來解釋python指令碼,來執行python指令碼的。 # -*- coding: utf-8 -*- 是用來指定檔案編

python編碼轉換 unicode, utf-8, utf-16, GBK

GB 碼,全稱是GB2312-80《資訊交換用漢字編碼字符集基本集》,1980年釋出,是中文資訊處理的國家標準,在大陸及海外使用簡體中文的地區(如新加坡等)是強制使用的唯一中文編碼。P- Windows3.2和蘋果OS就是以GB2312為基本漢字編碼, Windows 95/98則以GBK為基本漢字編碼

python中文顯示亂碼,已經在開頭有了coding utf-8

分享一下我老師大神的人工智慧教程吧。零基礎,通俗易懂!風趣幽默!http://www.captainbed.net/ 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

python中遇到包含UTF-8編碼中文的列表或字典的輸出的解決方法

今天,在除錯程式時,遇到了一個編碼問題,折騰了好久,看到了一篇部落格:點選開啟連結 才解決了問題,現在摘錄如下,以免今後遇到同樣的問題再次折騰。 在python 下面一個包含中文字串的列表(lis

Python 1 初識python 編碼 註釋

機器碼 作用 程序員 python 1 人性 後綴 命令 裏的 軟件 1.Python介紹   Python是一種高級語言,與JAVA C# 等同。可以編寫各種應用程序,每種語言都有其合適的應用場景。而Python 的優勢在於更加人性化、簡便的語法規則,以及針對各種具體場景

c#之如何轉換文本文件編碼格式為utf-8

格式 logs 文件編碼 pre str enc cnblogs style ext 如代碼: string content = File.ReadAllText(path, Encoding.Default); File.WriteAllText(path, conte