python筆記6-%u60A0和\u60a0類似unicode解碼

來源:互聯網
上載者:User

標籤:obj   print   區分大小寫   object   python2   try   直接   www.   http   

有時候從介面的傳回值裡面擷取到的是類似"%u4E0A%u6D77%u60A0%u60A0"這種格式的編碼,不是python裡面的unicode編碼。

python裡面的unicode編碼應該是這種格式:\u4e0a\u6d77\u60a0\u60a0

unicode編碼-python2

1.先看下python的unicode編碼:\u60a0,這個是\u開頭的,裡面的英文是小寫

# coding:utf-8# 前面加u可以直接列印中文a = u"\u4e0a\u6d77\u60a0\u60a0"print(a)# 字串需decode成預設unicode編碼b = r"\u4e0a\u6d77\u60a0\u60a0"print(b.decode("unicode_escape"))

2.如果在字串前面加個u,意思是轉化成unicode編碼,如果擷取到的是應該字串原型,那就需要decode解碼成unicode編碼,python裡面預設的unicode編碼名稱是unicode_escape

替換%-python2

1.如果是這種帶%的編碼,先替換成,這樣就是unicode編碼了,雖然裡面的英文字元是大小,還好這裡不區分大小寫。

# coding:utf-8c = "%u4E0A%u6D77%u60A0%u60A0"# 解決辦法一:替換%d = c.replace("%", "\\")print(d.decode(‘unicode_escape‘))
解決辦法二:unichr

1.先切割成單個字元,再用unichr轉換成中文,再連成字串,這個有點複雜了

# coding:utf-8def switch_to_ch(f):    ‘‘‘轉換成中文‘‘‘    g = f.split("%u")[1:]    h = [‘‘+unichr(int(i, 16)) for i in g]    return "".join(h)if __name__ == "__main__":    f = "%u4e0a%u6d77%u60a0%u60a0"    ch = switch_to_ch(f)    print(ch)
python3解碼

1.python3預設的編碼就是unicode,這個跟python2還不太一樣,如果直接給字串decode會報錯:AttributeError: ‘str‘ object has no attribute ‘ecode‘

2.python3先encode成utf-8編碼,再decode成預設的unicode就可以了

3.代碼參考

# coding:utf-8c = "%u4E0A%u6D77%u60A0%u60A0"# python3解決辦法:替換%d = c.replace("%", "\\")print(d.encode("utf-8").decode("unicode_escape"))
  標籤: python

python筆記6-%u60A0和\u60a0類似unicode解碼

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.