Python的編碼註釋# -*- coding:utf-8 -*- (即在py中寫中文)
自動解決pycharm下,中文輸出的問題 - 偏執狂xj的個人空間 - 開源中國社群 http://my.oschina.net/longmaox/blog/180745
因為編碼的原因,如果直接用:
?1 |
print
"你好!" ;
|
SyntaxError: Non-ASCII character '\xe4' in file C:/Users/*/PycharmProjects/HelloWorld/HelloWorld.py on line 4, but no encoding declared; see http://www.python.org/peps/pep-0263.html for detail
上面的連結給瞭解決方案,只要在檔案開頭加上這麼一句:
?1 |
#
-*- coding: utf-8 -*-
|
每次新增很麻煩,所以可以把它寫進模板裡面,一勞永逸。模板修改在:file->setting->file and code templatea ->python script 。修改完是這樣的效果 :
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Python的編碼註釋# -*- coding:utf-8 -*- - arbel的專欄 - 部落格頻道 - CSDN.NET http://blog.csdn.net/arbel/article/details/7957782
如果要在python2的py檔案裡面寫中文,則必須要新增一行宣告檔案編碼的註釋,否則python2會預設使用ASCII編碼。
- # -*- coding:utf-8 -*-
問題就來了,為什麼要如此宣告?
首先請參考Python的PEP http://www.python.org/dev/peps/pep-0263/
概要如下
1.必須將編碼註釋放在第一行或者第二行
2.可選格式有
- # coding=<encoding name>
- 或者
- #conding:<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