日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

pythonunicode和str_python的str,unicode对象的encode和decode方法

發布時間:2025/3/21 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pythonunicode和str_python的str,unicode对象的encode和decode方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

python的str,unicode對象的encode和decode方法

python中的str對象其實就是"8-bit string" ,字節字符串,本質上類似java中的byte[]。

而python中的unicode對象應該才是等同于java中的String對象,或本質上是java的char[]。

對于

Python代碼

s="你好"

u=u"你好"

1. s.decode方法和u.encode方法是最常用的,

簡單說來就是,python內部表示字符串用unicode(其實python內部的表示和真實的unicode是有點差別的,對我們幾乎透明,可不考慮),和人交互的時候用str對象。

s.decode -------->將s解碼成unicode,參數指定的是s本來的編碼方式。這個和unicode(s,encodename)是一樣的。

u.encode -------->將unicode編碼成str對象,參數指定使用的編碼方式。

助記:decode to unicode from parameter

encode to parameter from unicode

只有decode方法和unicode構造函數可以得到unicode對象。

上述最常見的用途是比如這樣的場景,我們在python源文件中指定使用編碼cp936,

# coding=cp936或#-*- coding:cp936 -*-或#coding:cp936的方式(不寫默認是ascii編碼)

這樣在源文件中的str對象就是cp936編碼的,我們要把這個字符串傳給一個需要保存成其他編碼的地方(比如xml的utf-8,excel需要的utf-16)

通常這么寫:

strobj.decode("cp936").encode("utf-16")

You typically encode a unicode string whenever you need to use it for IO, for instance transfer it over the network, or save it to a disk file.

To convert a string of bytes to a unicode string is known as decoding. Use unicode('...', encoding) or '...'.decode(encoding).

You typically decode a string of bytes whenever you receive string data from the network or from a disk file.

2.

第一條已經寫了不少,因為是最常用到的,基本不用怎么解釋。我重點想說的是這第二條。

似乎有了unicode對象的encode方法和str的decode方法就足夠了。奇怪的是,unicode也有decode,而str也有

encode,到底這兩個是干什么的。

用處1

str本身已經是編碼過的了,如果再encode很難想到有什么用(通常會出錯的)

先解釋下這個

str.encode(e) is the same as unicode(str).encode(e).

This is useful since code that expects Unicode strings should also work when it is passed

ASCII-encoded 8-bit strings(from Guido van Rossum)

python之父的這段話大概意思是說encode方法本來是被unicode調的,但如果不小心被作為str對象的方法調,并且這個str對象正好

是ascii編碼的(ascii這一段和unicode是一樣的),也應該讓他成功。這就是str.encode方法的一個用處(我覺得這個基本等于沒用)

類似地,把光用ascii組成的unicode再decode一回是一樣的道理,因為好像幾乎任何編碼里ascii都原樣沒變。因此這樣的操作等于沒做。

u"abc".decode("gb2312")和u"abc"是相等的。

用處2

非字符的編碼集non-character-encoding-codecs,這些只在python中定義,離開python就沒意義(這個來自python的官方文檔)

并且也不是人類用的語言,呵呵。

比如

Python代碼'\n'.encode('hex')=='0a'

u'\n'.encode('hex')=='0a'

'0a'.decode('hex')=='\n'

u'0a'.decode('hex')=='\n'

可見名為hex的編碼可以講字符表示(當然了,必須是ascii內的)和十六進制表示之間轉換

另外還有很多好玩的,比如:base64通俗的講是號稱防君子不防小人的給郵件的編碼,gzip大概是指壓縮吧(這是我猜的),rot13回轉13等,不知者google之

關于這些,官方有個詳細的表格,在http://docs.python.org/library/codecs.html中的Standard Encodings一節中,前一個表格是基于字符的編碼,第二個表格

就是這里的非字符的編碼。關于這些特殊編碼,官方一句說明:

For the codecs listed below, the result in the “encoding” direction is always a byte string.

The result of the “decoding” direction is listed as operand type in the table.

encode的結果一定是一個byte的str,而decode的結果在表中operand一列。

參考

Converting Between Unicode and Plain Strings 在Unicode和普通字符串之間轉換

http://wiki.woodpecker.org.cn/moin/PyCkBk-3-18

what’s the difference between encode/decode? (python 2.x)

http://stackoverflow.com/questions/447107/whats-the-difference-between-encode-decode-python-2-x

http://docs.python.org/library/codecs.html

編碼聲明的作用

請參考http://www.python.org/dev/peps/pep-0263/

聲明源文件中將出現非ascii編碼;

在高級的IDE中,IDE會將你的文件格式保存成你指定編碼格式。

決定源碼中類似于u'哈'這類聲明的將'哈'解碼成unicode所用的編碼格式,也是一個比較容易讓人迷惑的地方。

(java不需要聲明的原因在于:java中默認是本地編碼而py中默認是ascii,搞得python更易出錯,

并且,java編譯的時候還有個指定編碼的參數encoding)

文件的編碼格式決定了在該源文件中聲明的字符串的編碼格式,例如:

Python代碼str?=?'哈哈'

print?repr(str)

a.如果文件格式為utf-8,則str的值為:'\xe5\x93\x88\xe5\x93\x88'(哈哈的utf-8編碼)

b.如果文件格式為gbk,則str的值為:'\xb9\xfe\xb9\xfe'(哈哈的gbk編碼)

我的理解:文件編碼格式保存后沒有地方指明,只有靠聰明或笨的編輯器,編譯器去猜。而聲名就更精確一些。

讓兩者一致了總不會錯。

其實好多其他語言或應用中也是類似的decode和encode概念,比如在java中String的涉及的編碼轉換及jdk中的工具native2ascii,

好像javascript也有這個,記不清楚了。

總結

以上是生活随笔為你收集整理的pythonunicode和str_python的str,unicode对象的encode和decode方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 精品无码国产污污污在线观看 | 欧美性欧美zzzzzzzzz | 精品国产一区二区三区久久狼黑人 | 国产三级视频 | 黑名单上的人全集免费观看 | 国产精品久久久久久亚洲调教 | 亚洲最大福利视频网 | 国产激情免费 | 中文字幕一区二区三区乱码人妻 | 影音先锋亚洲一区 | 国产美女主播在线 | 奶罩不戴乳罩邻居hd播放 | 欧美黄色小说视频 | xxx色| 婷婷射| 欧美456 | 国产视频自拍一区 | 800av凹凸| 激情啪啪网 | 日韩香蕉视频 | 日韩黄色三级视频 | 老女人毛片 | 日韩在线三级 | 露脸丨91丨九色露脸 | 无码人妻av一区二区三区波多野 | 色乱码一区二区三区在线男奴 | 成熟丰满熟妇高潮xxxxx视频 | 欧美成人午夜精品免费 | 18精品爽国产白嫩精品 | 96av在线 | 星空大象在线观看免费播放 | 久久视频一区 | 亚洲福利午夜 | 少妇一级免费 | av丝袜在线 | www.夜夜骑 | 国产成人一区在线观看 | 成人免费看类便视频 | 亚洲精品乱码久久久久久按摩观 | 国产成人精品一区二区三区 | 制服诱惑一区 | 香蕉视频传媒 | jizzjizz日本人 | 色欧美视频 | 波多野结衣亚洲天堂 | 黄色网址视频 | 好吊妞在线| 免费毛片大全 | 视频在线观看视频 | 婷婷五月情 | 壮汉被书生c到合不拢腿 | 美梦视频大全在线观看高清 | 一级性生活毛片 | 波多野结衣视频在线观看 | 亚洲无码乱码精品国产 | 欧美日韩国产片 | 中文字幕第27页 | 一本色道久久88亚洲精品综合 | 青青草一区二区三区 | 91在线第一页 | xxx麻豆 | 国产古装艳史毛片hd | 亚洲高清资源 | 裸体一区二区三区 | 国产剧情一区二区三区 | 成人妇女淫片aaaa视频 | 伊人久久大香线蕉成人综合网 | 超碰免费人人 | 欧美乱淫 | 寡妇高潮一级视频免费看 | 欧美国产一级 | 日韩网站免费 | 亚洲日本色 | 一本黄色片 | 玉米地疯狂的吸允她的奶视频 | 久久国产精品系列 | 超碰在线9| 四虎影视在线 | 精品国产aⅴ麻豆 | 牛牛精品一区 | 奶水喷溅 在线播放 | 玖草影院 | 大地资源影视在线播放观看高清视频 | 日韩性生活视频 | 国产性猛交╳xxx乱大交一区 | 日韩中文视频 | 亚洲黄色在线观看 | 国产精品久久9 | 密桃成熟时在线观看 | 中文字幕人妻互换av久久 | www.haoav| 中文字幕无线码 | 婷婷五月综合激情 | 日本欧美在线 | 亚洲视频123 | 北条麻妃一二三区 | 欧美日韩亚洲一区二区 | 樱花影院电视剧免费 | 白白色在线播放 |