關於Python的預設字符集 • cenalulu's Tech Blog
阿新 • • 發佈:2018-12-23
本文將簡要介紹Python程式解析使用的字符集歷史和配置方法。
背景: 在寫指令碼程式的時候難免會設計一些和中文相關的變數內容。這個時候對於一個python新手(包括我在內)來說如何配置python使之能夠正確識別程式內的中文內容就會變得非常頭疼。本文將會簡要介紹python字符集的配置方法和一些相關歷史資訊
Python的預設字符集
Python的預設字符集在幾個大版本中有過改變,以下是各個版本的預設字符集列舉:
- Python2.1及以前: latin1
- Python2.3及之後,Python2.5以前:latin1 (但是會對非ASCII字符集字元提出WARNING)
- Python2.5及以後:ASCII
如何配置預設字符集(Python2.5以前)
配置Python當前指令碼檔案解析使用的預設字符集在2.5以前是很困難的。因為這些老版本不支援類似shebang的coding配置方式。雖然2.5以前的老版本已經過時了,這裡還是提一下這些版本配置字符集的方法。具體配置原理是通過sys.setdefaultencoding()
函式。但是糾結的是,這個函式site.py
(一個在Python啟動時自動執行的指令碼)中被刪除了。於是網上就出現了以下幾種版本的方法:
- reload(sys)
- 修改
sitecustomize.py
配置全域性預設字符集
兩種方法都僅僅是能work,且不優雅。更具體的操作方式可以參看stackoverflow上的討論
如何配置預設字符集(Python2.5及以後)
Python2.5
以後的預設字符集配置方式就簡單了很多。只要在Shebang後面(即#! /usr/bin/python
這一行之後), 緊跟上一行字符集配置行即可。字符集配置行的書寫規則需要符合這麼一個正則coding[:=]\s*([-\w.]+)
。也就是說以下幾種寫法都可以生效:
或者
更或者
這些都是可以work的