Python的編碼註釋# -*- coding:utf-8 -*-
如果要在python2的py檔案裡面寫中文,則必須要新增一行宣告檔案編碼的註釋,否則python2會預設使用ASCII編碼。
但是再往下看,發現其實只要註釋裡面有coding 和對應的編碼就可以了,例如
所以搞了半天對最標準的做法也有點糊塗了。
對於這個正則有些有點看不懂,但是大致如下必須有coding:[編碼]或者coding=[編碼]才行,這個應該可以視作為標準的宣告方式吧。
答案在PEP-0263裡面有所提及,那就是Emacs等編輯器使用這種方式進行編碼宣告。
- # -*- 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變數、編碼、註釋Python變數
- Python程式碼中文註釋出錯解決,使用UTF-8Python
- PHP中的字串、編碼、UTF-8PHP字串
- 體面編碼之程式碼註釋評論
- python編碼問題之——Decode error - output not utf-8PythonError
- 設定Tomcat的UTF-8編碼Tomcat
- UTF-8編碼與GBK編碼之間的轉換
- Python註釋之TODO註釋Python
- Python基礎學習篇-1-編碼-互動模式-註釋Python模式
- 【翻譯】編寫程式碼註釋的最佳實踐
- ffmpeg iOS平臺編譯 指令碼註釋iOS編譯指令碼
- 基於hi-nginx的web開發(python篇)——utf-8編碼NginxWebPython
- python中的註釋Python
- Python註釋Python
- JS 簡單實現UTF-8編碼,Base64編碼JS
- Python 的函式註釋Python函式
- SOLIDWORKS物料編碼工具SolidKits CodingSolid
- 學習電腦編碼utf-8,ansi編碼的基礎知識等
- PHP中文字元gbk編碼與UTF-8編碼的轉換PHP字元
- PHP中文GBK編碼轉UTF-8PHP
- Windows CMD永久設定UTF-8編碼Windows
- 字元編碼:ASCII,Unicode和UTF-8字元ASCIIUnicode
- 有趣的程式碼註釋
- python程式註釋Python
- Java反編譯程式碼左側註釋批量清除Java編譯
- Zen Coding 快速編寫HTML/CSS程式碼的實現HTMLCSS
- Unicode、GBK、UTF-8、ASCII的編碼簡介UnicodeASCII
- 設定myeclipse的預設編碼為utf-8Eclipse
- Python如何新增註釋?註釋有幾種?Python
- Redis作者談如何編寫系統軟體的程式碼註釋Redis
- docker 容器指定utf-8編碼,解決中文亂碼Docker
- Python字串的方法及註釋Python字串
- 轉貼 (談談Unicode編碼,簡要解釋UCS、UTF、BMP、BOM等名詞)&(UTF-8編碼規則)Unicode
- 字元編碼:Unicode & UTF-16 & UTF-8字元Unicode
- linux上mysql編碼 utf-8設定LinuxMySql
- 解決NSData中包含非法UTF-8編碼
- 程式碼才是最好的註釋
- 註釋程式碼的13技巧