python中文字串編碼處理

2021-06-17 16:17:25 字數 1119 閱讀 3677

1。字串還是位元組串?

我認為,python的字串只能說是位元組串,你甚至可以在裡面存放一張或者乙個二進位制可執行檔案

import types

f=open(『d:'r』)

pic=f.read()

print type(pic)==types.stringtype

print pic

如果存在,這段**會顯示true和一串亂碼。顯然所謂字串只是一串位元組資料。

2。』 『 和 u』 『

python的字串有』 『和u』 『兩種,前者是乙個位元組串,後者是經過unicode編碼的。unicode是一種用兩個位元組表示每乙個字元的編碼方式,具體不介紹了。可以這樣測試:

>>>str1=』你好』

>>>str1

『/xc4/xe3/xba/xc3′ 得到乙個位元組串,我的機子是xp系統的,預設編碼是cp936,所以這是「你好」的cp936編碼

>>>str2=str1.decode(『cp936′)

>>>str2

u』/u4f60/u597d』 轉化為unicode編碼,str2是乙個unicode字串

str1和str2都是乙個字串,不過編碼的方式不一樣,我們可以看出他們都占用4個位元組,不過真實長度卻一樣。

>>>len(str1)

4>>>len(str2)

2str1只是乙個普通的位元組串,python並不知道他使用的是什麼編碼,所以長度等於它占用的位元組數。而str2是乙個經過unicode編碼的 字串,我們使用字串物件的方法decode告訴系統』/xc4/xe3/xba/xc3′是乙個cp936編碼串,然後系統會把它轉化為 unicode編碼串u』/u4f60/u597d』,系統就可以判斷出這是乙個含有兩個字元的字串。反過來,我們可以使用encode方法把 unicode字串編碼為普通字串。

>>>str2.encode(『gbk』)

『/xc4/xe3/xba/xc3′

驚喜的是,我們其實很容易就可以得到乙個中文unicode字串。我們測試一下:

>>>mycity=u』佛山』

>>>mycity

u』/u4f5d/u5c71′

看到嗎?python已經為我們完成了轉換,mycity已經是unicode字串。

python 中文字串處理 獲得子串

由於python的處理是按照編碼來處理的比如 str 中國年 原始檔編碼格式是utf 8 str 0 len str 1 中國 這是錯誤的 年有三個uft 8編碼,所以還剩2個 所以會出現中國 亂碼,選取字串子串和 長度的操作是對unicode編碼的字串和ascii編碼字串操作進行。這裡就當其為as...

HBase處理中文字串

在設定scan的startrowkey與endrowkey時,經常需要在某個條件字串後面補充出乙個範圍。singlecolumnvaluefilter也會用到 比如 我的條件字串是 abc scan時我需要將下述內容都囊括到我scan的範圍內。abc123 abcdabc abccca 這時候我st...

python 中文編碼的處理

在win下寫點python的 對utf 8 老是處理不過來,並且解析一點漢字總會遇到一些漢字的編碼問題。下決心把它解決掉。1 嘗試第一種方式 utf8string utf8string.decode utf 8 utf8string utf8string.encode gbk 這個時候顯示基本上是正...