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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

乱码问题引申 python 中string和unicode

發(fā)布時間:2025/7/14 python 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 乱码问题引申 python 中string和unicode 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

HtmlTestRunner的亂碼問題


?

1生成的報告中,對print打印的數(shù)據(jù)都記錄下來,但是數(shù)據(jù)有些會存在亂碼。如下面。有些又沒有亂碼。

?

這到底是怎么回事呢? str=t.encode('utf-8') print str 第一個test我以utf-8編碼,看來htmlTestRunner不是utf-8 編碼。 為何第二個正確了呢? 第二個是unicode編碼方式。 也就是說,可以被其他任何encode了。 原碼中已這個進(jìn)行編碼,也就是說他設(shè)置為latin-1這種編碼方式了。估計是作者自己國家的一種編碼方式。

?

修改為如下后,問題解決

?說明,python2.7以下以上修改就可以,python3以上版本還需修改其他地方。我是從蟲師書里進(jìn)行修改再來研究這個問題的。

引申出來一個問題。string和unicode


?

string類型是字符串。會形成不同的編碼集。 輸入時為utf-8編碼,輸出時設(shè)置的編碼集為utf-8。他就解碼正常,會正確打印輸入的內(nèi)容。 如果輸入時為utf-8。輸出為gbk呢?就會亂碼。

?

如何進(jìn)行編碼


#代碼中設(shè)置編碼格式 #coding:utf-8 # -*-coding=utf-8 -*-

如何解碼


如果是后臺日志,他會自動解碼,如果是前臺頁面。或者數(shù)據(jù)庫呢? 他們都設(shè)置了類似的編碼格式。 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 所有不需要我們做什么,雙方定義好了規(guī)則,他們自動的編碼和解碼了。 輸入:print('你好') 前臺就打印了你好。

如何解決亂碼


如果定錯了,就會出現(xiàn)亂碼。這就是亂碼的由來。就像上方所說:如果輸入時為utf-8。輸出為gbk呢?就會亂碼。 這時候就是看問題出在哪方,把規(guī)則定義好。 上面只講述了輸入輸出雙方的自動編碼和解碼。可在python中提供一套編碼和解碼的方法(其他語言肯定也提供一套方法)。 這時候需要說說unicode。unicode是國際統(tǒng)一碼,就如同標(biāo)準(zhǔn)時間一樣。是唯一的。 def test_encode_decode():''' . 展示 str的編碼方式 . encode(),decode()方法內(nèi)默認(rèn)編碼格式為utf-8''''基本方式'print repr('你好'), ' string(utf-8)'print repr(u'你好'), ' unicode(unicode)''錯誤使用: string(utf-8) -> string(gbk)【錯誤】 -> unicode(unicode)'#print repr('你好'.encode('gbk').decode())#以gbk解碼【錯誤方法】報錯'單獨(dú)使用decode,encode'print repr('你好'.decode()), ' string(utf-8) -> unicode(unicode)'# 轉(zhuǎn)換成了unicode方法print repr(u'你好'.encode('gbk')), ' unicode(unicode) -> string(gbk)''組合使用decode,encode: 更改string的編碼類型,編碼再解碼'print repr('你好'.decode().encode('gbk')), ' string(utf-8) -> unicode(unicode) -> string(gbk)'print repr('你好'.encode('utf-8').decode()), ' string(utf-8) -> string(utf-8) -> unicode(unicode)'#與 '你好'.decode() 結(jié)果一致'gbk -> unicode'str1=u'你好'.encode('gbk')#gbk編碼print repr(str1.decode('gbk')), ' string(gbk) -> unicode(unicode)' print repr(str1.decode('gbk').encode()), ' string(gbk) -> unicode(unicode) -> string(utf-8)'

結(jié)果為

?

轉(zhuǎn)載于:https://www.cnblogs.com/q2z2012/p/7449284.html

總結(jié)

以上是生活随笔為你收集整理的乱码问题引申 python 中string和unicode的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。