close

ASCII 只能儲英文或特殊字符,只占一個字節,一個字節8bit,不能儲中文,所以才出現Unicode

Unicode 不管是中文或英文,都是占二個字節,一個字節8bit

UTF-8 是一種針對Unicode的可變長度字元編碼,英文字符一樣會依照ASCII碼規範,只占一個字節8bit,而中文字符的話,統一就占三個字節了

(1) 在Python 3.x 中,python 直譯器預期的 .py 編碼,預設是 UTF-8,而在 Ubuntu 15.10 中,預設採用的文字編碼也是 UTF-8,

這時在 .py 檔案中撰寫中文,並不會有問題發生,然而,

在 Windows 中,使用記事本編輯文字檔案時,預設的文字編碼是什麼嗎? 在 Windows 中使用記事本編輯文字檔案,預設的編碼是 MS950

所以要加上 # -*- coding: UTF-8 -*-  且儲存成UTF-8格式
忘記加上這一行就在程式使用中文的話,會出現下面的錯誤

SyntaxError: Non-ASCII character '\xe4' in file on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

(2) Python 3.x 中,文字是 str 型態的實例,不過 str 代表的是 Unicode
在 Python 2.x,程式中,文字雖是 str 的實例,然而卻是代表文字資料的位元組序列(Byte sequence )

在 Python 2.x 中,如果想要用 Unicode 來代表文字,也就是想要用 unicode 型態來封裝文字,可以使用 Unicode 字面常量(Unicode literal) 來表示,也就是在文字前置一個 u 符號。

記住: python3 使用unicode

(1) 了解你的環境Default設定,印出目前系統字符編碼

C:\>python
Python 2.7.15 |Anaconda, Inc.| (default, Nov 13 2018, 17:33:26) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print sys.stdout.encoding
cp437
>>> print sys.getdefaultencoding()
ascii
>>> print sys.getfilesystemencoding()
mbcs

(2) - Environment variable

set PYTHONIOENCODING=UTF-8

在Python3因為字串已經全部統一成 unicode ,所以不必在字符串前加上 u ,這是Python2和Python3的重要差別之一,需要特別注意

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 stanley 的頭像
    stanley

    史坦利Stanley程式Maker的部落格

    stanley 發表在 痞客邦 留言(0) 人氣()