日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)Python教程:python輸出到文件亂碼如何解決

python代碼文件的編碼

我們提供的服務(wù)有:網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、淮安ssl等。為近1000家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的淮安網(wǎng)站制作公司

py文件默認(rèn)是ASCII編碼,中文在顯示時(shí)會(huì)做一個(gè)ASCII到系統(tǒng)默認(rèn)編碼的轉(zhuǎn)換,這時(shí)就會(huì)出錯(cuò):SyntaxError: Non-ASCII character。需要在代碼文件的第一行或第二行添加編碼指示:

1 # coding=utf-8 ##以u(píng)tf-8編碼儲(chǔ)存中文字符

2 print '中文'

像上面那樣直接輸入的字符串是按照代碼文件的編碼來處理的,如果用unicode編碼,有以下三種方式:

1 s1 = u'中文' #u表示用unicode編碼方式儲(chǔ)存信息

2 s2 = unicode('中文','gbk')

unicode是一個(gè)內(nèi)置函數(shù),第二個(gè)參數(shù)指示源字符串的編碼格式。

decode是任何字符串具有的方法,將字符串轉(zhuǎn)換成unicode格式,參數(shù)指示源字符串的編碼格式。

encode也是任何字符串具有的方法,將字符串轉(zhuǎn)換成參數(shù)指定的格式。

(2)、字符串的編碼

用 u'漢字' 構(gòu)造出來的是unicode類型,不用的話構(gòu)造出來是str類型

str的編碼是與系統(tǒng)環(huán)境相關(guān)的,一般就是sys.getfilesystemencoding()得到的值

所以從unicode轉(zhuǎn)str,要用encode方法

從str轉(zhuǎn)unicode,所以要用decode

例如:

# coding=utf-8 #默認(rèn)編碼格式為utf-8

s = u'中文' #unicode編碼的文字

print s.encode('utf-8') #轉(zhuǎn)換成utf-8格式輸出

但當(dāng)python中間處理非ASCII編碼時(shí),經(jīng)常會(huì)出現(xiàn)如下錯(cuò)誤:

UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in range(128)

0x??是超出128的數(shù)字,python在默認(rèn)的情況下認(rèn)為語言的編碼是ascii編碼,所以無法處理其他編碼,需要設(shè)置python的默認(rèn)編碼為所需要的編碼。

一個(gè)解決的方案是在代碼中添加:

import sys

reload(sys)

sys.setdefaultencoding('utf-8') (其中utf-8為你想輸出的字符編碼)

解釋:

sys.setdefaultencoding方法在python導(dǎo)入site.py后就刪除了(具體代碼查看site.py就可以看到)因此如果想用的話可以再重新load進(jìn)入

總結(jié):

u=u'unicode編碼文字'

g=u.encode('gbk') #轉(zhuǎn)換為gbk格式

print g #此時(shí)為亂碼,因?yàn)楫?dāng)前環(huán)境為utf-8,gbk編碼文字為亂碼

str=g.decode('gbk').encode('utf-8') #以gbk編碼格式讀取g(因?yàn)樗褪莋bk編碼的,需要事先知道它是GBK編碼)并轉(zhuǎn)換為utf-8格式輸出

print str #正常顯示中文(同文件輸出)

安全的方法:

s.decode('gbk','ignore').encode('utf-8′) #以gbk編碼讀?。ó?dāng)然是讀取gbk編碼格式的文字了)并忽略錯(cuò)誤的編碼,轉(zhuǎn)換成utf-8編碼輸出。

推薦學(xué)習(xí)《Python教程》!


新聞名稱:創(chuàng)新互聯(lián)Python教程:python輸出到文件亂碼如何解決
瀏覽地址:http://www.dlmjj.cn/article/cogpccc.html