❶ 怎麼在python里使用UTF-8編碼

概述

在python代碼即.py文件的頭部聲明即可

解析

py文件中的編碼

Python 默認腳本文件都是 ANSCII 編碼的,當文件 中有非 ANSCII 編碼范圍內的字元的時候就要使用"編碼指示"來修正一個 mole 的定義中,如果.py文件中包含中文字元(嚴格的說是含有非anscii字元),則需要在第一行或第二行指定編碼聲明:

# -*- coding=utf-8 -*-

#coding=utf-8

# 以上兩種選其一即可

其他的編碼如:gbk、gb2312也可以;否則會出現:

SyntaxError: Non-ASCII character 'xe4' in file test.py on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

python中的編碼與解碼

先說一下python中的字元串類型,在python中有兩種字元串類型,分別是 str 和 unicode,他們都是basestring的派生類;

str類型是一個包含Characters represent (at least) 8-bit bytes的序列;

unicode 的每個 unit 是一個 unicode obj;

在str的文檔中有這樣的一句話:

    The string data type is also used to represent arrays of bytes, e.g., to hold data read from a file.

也就是說在讀取一個文件的內容,或者從網路上讀取到內容時,保持的對象為str類型;如果想把一個str轉換成特定編碼類型,需要把str轉為Unicode,然後從unicode轉為特定的編碼類型如:utf-8、gb2312等。

拓展內容

utf-8編碼

UTF-8(8-bit Unicode Transformation Format)是一種針對Unicode的可變長度字元編碼,也是一種前綴碼。它可以用來表示Unicode標准中的任何字元,且其編碼中的第一個位元組仍與ASCII兼容,這使得原來處理ASCII字元的軟體無須或只須做少部分修改,即可繼續使用。因此,它逐漸成為電子郵件、網頁及其他存儲或發送文字的應用中,優先採用的編碼。

UTF-8使用一至六個位元組為每個字元編碼(盡管如此,2003年11月UTF-8被RFC 3629重新規范,只能使用原來Unicode定義的區域,U+0000到U+10FFFF,也就是說最多四個位元組):

1、128個US-ASCII字元只需一個位元組編碼(Unicode范圍由U+0000至U+007F)。

2、帶有附加符號的拉丁文、希臘文、西里爾字母、亞美尼亞語、希伯來文、阿拉伯文、敘利亞文及它拿字母則需要兩個位元組編碼(Unicode范圍由U+0080至U+07FF)。

3、其他基本多文種平面(BMP)中的字元(這包含了大部分常用字,如大部分的漢字)使用三個位元組編碼(Unicode范圍由U+0800至U+FFFF)。

4、其他極少使用的Unicode輔助平面的字元使用四至六位元組編碼(Unicode范圍由U+10000至U+1FFFFF使用四位元組,Unicode范圍由U+200000至U+3FFFFFF使用五位元組,Unicode范圍由U+4000000至U+7FFFFFFF使用六位元組)。

對上述提及的第四種字元而言,UTF-8使用四至六個位元組來編碼似乎太耗費資源了。但UTF-8對所有常用的字元都可以用三個位元組表示,而且它的另一種選擇,UTF-16編碼,對前述的第四種字元同樣需要四個位元組來編碼,所以要決定UTF-8或UTF-16哪種編碼比較有效率,還要視所使用的字元的分布范圍而定。不過,如果使用一些傳統的壓縮系統,比如DEFLATE,則這些不同編碼系統間的的差異就變得微不足道了。若顧及傳統壓縮演算法在壓縮較短文字上的效果不大,可以考慮使用Unicode標准壓縮格式(SCSU)。

互聯網工程工作小組(IETF)要求所有互聯網協議都必須支持UTF-8編碼。互聯網郵件聯盟(IMC)建議所有電子郵件軟體都支持UTF-8編碼。

❷ linux環境上python將unicode編碼轉utf-8格式轉不成功

定義一下編碼格式 應該就不用在手動轉碼了

#!/usr/bin/envpython
#coding:utf-8

❸ Python ascii 編碼 怎麼轉化為utf-8編碼

實現代碼如下:

a='abce'
#printtype(a)
b=a.decode("ascii")
#printtype(b)
c=a.decode("ascii").encode("utf-8")
#printtype(c)


在python中進行編碼轉換都是通過unicode作為中間值實現的。所以要先decode成unicode字元,然後再使用encode轉換成utf-8編碼的str。可以把注釋取消了,看下轉換過程中的類型。

❹ python操作excel讀取數據,如何返回的是gbk

如果知道編碼方式可以在open時指定
book = open_workbook('123.xls',encoding='cp1252')

❺ python utf8 gbk 編碼問題

你是不是想在python里把中文變成鏈接中%E5%BE%85這種形式?直接用urllib.urlencode({'word':'中文'})方法
而顯示\xe5\xbe\x85\是因為你沒有使用read()方法,加上後變成:'待解析網頁'.decode('gbk').encode('utf-8').read(),就是你熟悉的中文了。
不過,'待解析網頁'.decode('gbk').encode('utf-8')這句我要吐槽一下,網頁明顯是utf-8編碼,你在文件開頭聲明utf-8編碼就可以了,這一句是多餘的。在這基礎上讀取網頁直接用 '待解析網頁'.read()

❻ python2.7 utf-8轉gbk 亂碼

windows的本地默認編復碼制是cp936(gbk編碼),Windows中直接列印utf-8的字元串是亂碼
將你文件申明為UTF-8保存
#coding:utf-8

def respeak(self):
cText =pyperclip.paste()
gt = cText.decode('utf-8').encode('gbk')

self.ui.mainT.setText(QtCore.QString(gt))

❼ python 中怎麼把類似這樣的'\xe5\xae\x9d\xe9\xb8\xa1\xe5\xb8\x82'轉換成漢字輸出

我猜這個數據格式是位元組流bytes格式吧?此時可用bytes.decode('gbk')解碼為字元串。

比如:a=b'123'
c=a.decode('gbk')
print(c)
可得:123


❽ python2.7 怎樣將中文字元串轉為位元組流

s=u'授權碼不存在或已過期'
s.encode('utf-8')

❾ python utf-8轉中文 出現亂碼

把你的 oldb.py 的文件格式 改成utf-8格式
或者 print u'這是我的第一個。。。。' 前面加個u 試試