浙江省高等学校教师教育理论培训

微信搜索“教师资格证岗前培训”小程序

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
關於python 2.x中文字編碼的簡單說明 from v2ex
By 013231 at 2 天前, 154 次点击
剛剛看到有人在糾結文字編碼的問題, 我來說一下我的理解.
我也是Python新手, 此文中如有錯誤請指正.
1. 如果文件含有非ASCII字符, 在開頭加一行註釋:
# encoding=utf-8
# 如果你的源代碼文件不是UTF-8編碼, 把'utf-8'換成相應的編碼
否則你會遭遇
SyntaxError: Non-ASCII character
錯誤.
2. str類型是字節序列而非字符序列. 它的編碼方式由文件本身的編碼方式或encode時指定的編碼方式決定:
1. 寫在源文件中的str, 編碼方式爲源文件的編碼方式.
2. 從其它文件中讀取的str, 就是那個文件中的字節序列, 不做任何轉換.
3. 使用encode方法得到的str, 其編碼爲指定編碼.
對str使用len, 會返回字節序列的長度:
UTF-8環境下, '文字'的字節序列爲0xe6 0x96 0x87 0xe5 0xad 0x97, len('文字') == 6.
GB18030環境下, '文字'的字節序列爲0xce 0xc4 0xd7 0xd6, len('文字') == 4
3. unicode類型是字符序列, 無需關心它內部的編碼方式(可能爲USC-2或USC-4).
無論編碼爲何, len(u'文字') == 2.
4. encode的作用是把字符序列編碼成字節序列(unicode -> str), decode的作用是把字節序列解碼成字符序列(str -> unicode). 如果對unicode使用encode或對str使用decode, 會得到錯誤或無意義的結果.
5. __str__必須返回str類型, __unicode__必須返回unicode類型. 否則會收到TypeError.
3 回复  |  直到 2012-05-08 16:07:00 PM
    1
reus   2 天前
很清楚明白
    2
arzon   2 天前
各种情况都解释地很清楚.
还不太了解python文字编码机制的同学可以看看.
    3
loading   2 天前
为了表示感谢,回复一个。5个铜币,亲收下^_^
posted on 2012-05-11 09:00  lexus  阅读(190)  评论(0编辑  收藏  举报