在python中的字串記憶體中是用unicode進行編碼
python2
>>> s="我愛你python"
>>> su=u"我愛你python"
>>> s.encode("utf-8")
traceback (most recent call last):
file
"", line 1, in
unicodedecodeerror: 'ascii' codec can't decode byte 0xce
in position 0: ordinal
notin
range(128)
>>> s.decode("gb2312").encode("utf-8")
'\xe6\x88\x91\xe7\x88\xb1\xe4\xbd\xa0python'
原因是s字串在window中預設是gb2312,要把它decode成unicode編碼,然後encode成utf-8,在encode的時候一定要保證該字串是unicode,如果直接呼叫encode會首先預設呼叫系統的編碼進行decode系統預設編碼
>>>
import sys
>>> sys.getdefaultencoding()
'ascii'
在python3中
>>> s="我愛你python"
>>> s.encode("utf-8")
b'\xe6\x88\x91\xe7\x88\xb1\xe4\xbd
\xa0python'
預設s字串是unicode
python中string和Unicode的區別
首先要弄清楚的是,在python裡,string object和unicode object是兩種不同的型別。string object是由characters組成的sequence,而unicode object是unicode code units組成的sequence。string裡的char...
python中的正規表示式與unicode
正規表示式作為一種最常用的工具,在平常的工作中使用的非常普遍,在python中是由re庫提供這個功能,除此之外還有regex庫提供額外的功能。在一般的正規表示式介紹中都是以ascii為代表來介紹的,但是作為乙個中國的程式設計師,所遇到的乙個最基本的問題就是字元編碼了。所以這裡說下如何在python中...
python中編碼轉換
當python中間處理非ascii編碼時,經常會出現如下錯誤 unicodedecodeerror ascii codec can t decode byte 0x?in position 1 ordinal not in range 128 0x?是超出128的數字,python在預設的情況下認為...