成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識(shí)庫 > 詳解python中文編碼問題

詳解python中文編碼問題

熱門標(biāo)簽:老人電話機(jī)器人 無錫客服外呼系統(tǒng)一般多少錢 北京電信外呼系統(tǒng)靠譜嗎 梅州外呼業(yè)務(wù)系統(tǒng) 洪澤縣地圖標(biāo)注 大連crm外呼系統(tǒng) 高德地圖標(biāo)注是免費(fèi)的嗎 百度地圖標(biāo)注位置怎么修改 地圖標(biāo)注視頻廣告

 1.        在Python中使用中文

在Python中有兩種默認(rèn)的字符串:str和unicode。在Python中一定要注意區(qū)分“Unicode字符串”和“unicode對(duì)象”的區(qū)別。后面所有的“unicode字符串”指的都是python里的“unicode對(duì)象”。

事實(shí)上在Python中并沒有“Unicode字符串”這樣的東西,只有“unicode”對(duì)象。一個(gè)傳統(tǒng)意義上的unicode字符串完全可以用str對(duì)象表示。只是這時(shí)候它僅僅是一個(gè)字節(jié)流,除非解碼為unicode對(duì)象,沒有任何實(shí)際的意義。

我們用“哈哈”在多個(gè)平臺(tái)上測(cè)試,其中“哈”對(duì)應(yīng)的不同編碼是:

1.              UNICODE (UTF8-16),      C854;

2.              UTF-8,                    E59388;

3.              GBK,               B9FE。

1.1     Windows控制臺(tái)

下面是在windows控制臺(tái)的運(yùn)行結(jié)果:

 

可以看出在控制臺(tái),中文字符的編碼是GBK而不是UTF-16。將字符串s(GBK編碼)使用decode進(jìn)行解碼后,可以得到同等的unicode對(duì)象。

注意:可以在控制臺(tái)打印ss并不代表它可以直接被序列化,比如:

 

向文件直接輸出ss會(huì)拋出同樣的異常。在處理unicode中文字符串的時(shí)候,必須首先對(duì)它調(diào)用encode函數(shù),轉(zhuǎn)換成其它編碼輸出。這一點(diǎn)對(duì)各個(gè)環(huán)境都一樣。

總結(jié):在Python中,“str”對(duì)象就是一個(gè)字節(jié)數(shù)組,至于里面的內(nèi)容是不是一個(gè)合法的字符串,以及這個(gè)字符串采用什么編碼(gbk, utf-8, unicode)都不重要。這些內(nèi)容需要用戶自己記錄和判斷。這些的限制也同樣適用于“unicode”對(duì)象。要記住“unicode”對(duì)象中的內(nèi)容可絕對(duì)不一定就是合法的unicode字符串,我們很快就會(huì)看到這種情況。

總結(jié):在windows的控制臺(tái)上,支持gbk編碼的str對(duì)象和unicode編碼的unicode對(duì)象。

1.2     Windows IDLE(在Shell上運(yùn)行)

在windows下的IDLE中,運(yùn)行效果和windows控制臺(tái)不完全一致:

 

可以看出,對(duì)于不使用“u”作標(biāo)識(shí)的字符串,IDLE把其中的中文字符進(jìn)行GBK編碼。但是對(duì)于使用“u”的unicode字符串,IDLE居然一樣是用了GBK編碼,不同的是,這時(shí)候每一個(gè)字符都是unicode(對(duì)象)字符??!此時(shí)len(ss) = 4。

這樣產(chǎn)生了一個(gè)神奇的問題,現(xiàn)在的ss無法在IDLE中正常顯示。而且我也沒有辦法把ss轉(zhuǎn)換成正常的編碼!比如采用下面的方法:

 

這有可能是因?yàn)镮DLE本地化做得不夠好,對(duì)中文的支持有問題。建議在IDLE的SHELL中,不要使用u“中文”這種方式,因?yàn)檫@樣得到的并不是你想要的東西。

這同時(shí)說明IDLE的Shell支持兩種格式的中文字符串:GBK編碼的“str”對(duì)象,和UNICODE編碼的unicode對(duì)象。

1.3     在IDLE上運(yùn)行代碼

在IDLE的SHELL上運(yùn)行文件,得到的又是不同的結(jié)果。文件的內(nèi)容是:

 

直接運(yùn)行的結(jié)果是:

 

毫無瑕疵,相當(dāng)令人滿意。我沒有試過其它編碼的文件是否能正常運(yùn)行,但想來應(yīng)該是不錯(cuò)的。

同樣的代碼在windows的控制臺(tái)試演過,也沒有任何問題。

 1.4     Windows Eclipse

在Eclipse中處理中文更加困難,因?yàn)樵贓clipse中,編寫代碼和運(yùn)行代碼屬于不同的窗口,而且他們可以有不同的默認(rèn)編碼。對(duì)于如下代碼:

#!/usr/bin/python
# -*- coding: utf-8 -*-
 
s = "哈哈"
ss = u'哈哈'
 
print repr(s)
print repr(ss)
 
print s.decode('utf-8').encode('gbk')
print ss.encode('gbk')
 
print s.decode('utf-8')
print ss

前四個(gè)print運(yùn)行正常,最后兩個(gè)print都會(huì)拋出異常:
'/xe5/x93/x88/xe5/x93/x88'
u'/u54c8/u54c8'
哈哈
哈哈
Traceback (most recent call last):
 File "E:/Workspace/Eclipse/TestPython/Test/test_encoding_2.py", line 13, in module>
    print s.decode('utf-8')
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

也就是說,GBK編碼的str對(duì)象可以正常打印,但是不能打印UNICODE編碼的unicode對(duì)象。在源文件上點(diǎn)擊“Run as”“Run”,然后在彈出對(duì)話框中選擇“Common”:

 

可以看出Eclipse控制臺(tái)的缺省編碼方式是GBK;所以不支持UNICODE也在情理之中。如果把文件中的coding修改成GBK,則可以直接打印GBK編碼的str對(duì)象,比如s。

如果把源文件的編碼設(shè)置成“UTF-8”,把控制臺(tái)的編碼也設(shè)置成“UTF-8”,按道理說打印的時(shí)候應(yīng)該沒有問題。但是實(shí)驗(yàn)表明,在打印UTF-8編碼的str對(duì)象時(shí),中文的最后一個(gè)字符會(huì)顯示成亂碼,無法正常閱讀。不過我已經(jīng)很滿足了,至少人家沒有拋異常不是:)

BTW: 使用的Eclipse版本是3.2.1。

1.5     從文件讀取中文

在window下面用記事本編輯文件的時(shí)候,如果保存為UNICODE或UTF-8,分別會(huì)在文件的開頭加上兩個(gè)字節(jié) “/xFF/xFE” 和三個(gè)字節(jié)“/xEF/xBB/xBF”。在讀取的時(shí)候就可能會(huì)遇到問題,但是不同的環(huán)境對(duì)這幾個(gè)多于字符的處理也不一樣。

以windows下的控制臺(tái)為例,用記事本保存三個(gè)不同版本的“哈哈”。  

打開utf-8格式的文件并讀取utf-8字符串后,解碼變成unicode對(duì)象。但是會(huì)把附加的三個(gè)字符同樣進(jìn)行轉(zhuǎn)換,變成一個(gè)unicode字符,字符的數(shù)據(jù)值為“/xFF/xFE”。這個(gè)字符不能被打印。編碼的時(shí)候需要跳過這個(gè)字符。

 

打開unicode格式的文件后,得到的字符串正確。這時(shí)候適用utf-16解碼,能得到正確的unicdoe對(duì)象,可以直接使用。多余的那個(gè)填充字符在進(jìn)行轉(zhuǎn)換時(shí)會(huì)被過濾掉。  

 

打開ansi格式的文件后,沒有填充字符,可以直接使用。
結(jié)論:讀寫使用python生成的文件沒有任何問題,但是在處理由notepad生成的文本文件時(shí),如果該文件可能是非ansi編碼,需要考慮如何處理填充字符。

1.6     在數(shù)據(jù)庫中使用中文

剛剛接觸Python,我用的數(shù)據(jù)庫是mysql。在執(zhí)行插入、查找等操作時(shí),如果運(yùn)行環(huán)境使用的字符編碼和mysql不一致,就可能導(dǎo)致運(yùn)行時(shí)的錯(cuò)誤。當(dāng)然,和上面看到的情況一樣,運(yùn)行環(huán)境并不是關(guān)鍵因素,關(guān)鍵是查詢語句的編碼方式。如果在每次執(zhí)行查詢操作時(shí)都把查詢字符串做一次編碼轉(zhuǎn)換,轉(zhuǎn)變成mysql的默認(rèn)字符編碼,一樣不會(huì)遇到問題。但是這樣寫代碼也太痛苦了吧。

使用如下代碼連接數(shù)據(jù)庫:

self.conn = MySQLdb.connect(use_unicode = 1, charset='utf8', **server)

我不能理解的是既然數(shù)據(jù)庫用的默認(rèn)編碼是UTF-8,我連接的時(shí)候也用的是UTF-8,為什么查詢得到的文本內(nèi)容卻是UNICODE編碼(unicode對(duì)象)?這是MySQLdb庫的設(shè)置么?

1.7     在XML中使用中文

使用xml.dom.minidom和MySQLdb類似,對(duì)生成的dom對(duì)象調(diào)用toxml方法得到的是unicode對(duì)象。如果希望輸出utf-8文本,有兩種方法:

1.使用系統(tǒng)函數(shù)
在輸出xml文檔的時(shí)候進(jìn)行編碼,這是我覺得最好的方法。

xmldoc.toxml(encoding='utf-8')
xmldoc.writexml(outfile, encoding = ‘utf-8')

2.自己編碼生成

在使用toxml之后可以調(diào)用encode方法對(duì)文檔進(jìn)行編碼。但這種方法無法得到合適的xml declaration(xml文檔第一行中的encoding部分)。
不要嘗試通過xmldoc.createProcessingInstruction來創(chuàng)建一個(gè)processing instraction:

?xml version='1.0' encoding='utf-8'?>

xml declaration雖然看起來像是,但是事實(shí)上并不是一個(gè)processing instraction??梢酝ㄏ旅娴姆椒ǖ玫揭粋€(gè)滿意的xml文件:

print >> outfile, “?xml version='1.0' encoding='utf-8'?>”
print >> outfile, xmldoc.toxml().encode(‘utf-8')[22:]

其中第二行需要過濾掉在調(diào)用xmldoc.toxml時(shí)生成的“?xml version='1.0' ?>”,它的長(zhǎng)度是22。

相面是兩種方法的用法比較:

 

另外,在IDLE的shell中,不要用 u'中文' 對(duì)屬性進(jìn)行賦值。上面討論過,這樣得到的unicode字符串不正確。

到此這篇關(guān)于python中文編碼問題的文章就介紹到這了,更多相關(guān)中文編碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 用基于python的appium爬取b站直播消費(fèi)記錄
  • 女友半夜加班發(fā)自拍 python男友用30行代碼發(fā)現(xiàn)驚天秘密
  • 前女友發(fā)來加密的"520快樂.pdf",我用python破解開之后,卻發(fā)現(xiàn)...
  • 在前女友婚禮上用python把婚禮現(xiàn)場(chǎng)的WIFI名稱改成了

標(biāo)簽:泉州 岳陽 長(zhǎng)春 安慶 怒江 清遠(yuǎn) 洛陽 吉林

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解python中文編碼問題》,本文關(guān)鍵詞  詳解,python,中文,編碼,問題,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《詳解python中文編碼問題》相關(guān)的同類信息!
  • 本頁收集關(guān)于詳解python中文編碼問題的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    91动漫免费网站| 欧美伊久线香蕉线新在线| 国产精品熟妇一区二区三区四区| 99热99这里只有精品| 男女作爱免费网站| 日韩欧美三级在线| 国产偷窥洗澡视频| 高清亚洲成在人网站天堂| h视频免费看| 亚洲天堂av片| 国产色无码精品视频国产| 久久欧美中文字幕| 欧美一二区视频| 日本福利视频在线观看| 成人高清在线视频| 一本久道久久综合婷婷鲸鱼| 国内精品视频久久| 影音先锋欧美精品| 美女视频一区二区三区在线| 欧美激情一区二区| 三级网站免费观看| 国产69久久精品成人| 国产精品www在线观看| 国产精品综合色区在线观看| 中文字幕先锋av影音资源网| 依依成人在线视频| 国产精品第四页| 欧美性xxxx图片| 99热精品在线观看| 久久精品国产亚洲av香蕉| 福利视频网站一区二区三区| 91精品一区二区| 免费萌白酱国产一区二区三区| 神马午夜在线观看| 91香蕉嫩草影院入口| 欧美男男激情videos| 国产97在线 | 亚洲| 久久激情一区| 日韩a级片在线观看| 欧美巨乳在线| 日本成人黄色片| 免费拍拍拍网站| 黄色小视频在线免费观看| 人人干人人爱人人爱| 在线观看国产成人| 国产亚洲欧美久久久久| 淫行教师动漫| 17c丨国产丨精品视频| 亚洲精品动漫| av在线播放成人| 成人信息集中地欧美| 精品视频一区二区三区在线观看| 国产精品电影| 热久久美女精品天天吊色| 午夜爱爱毛片xxxx视频免费看| 国产丝袜视频一区| 欧美一区国产一区| 欧美第一视频| 四虎精品一区二区| 欧美性xxxxx极品视频| 国产伦精品一区二区三区免费迷| 亚洲老妇色熟女老太| 欧洲美女网站| 中文字幕人妻丝袜乱一区三区| 国产免费福利网站| 国产在线观看免费视频今夜| 国产白丝袜美女久久久久| 亚洲综合视频在线播放| 天天操天天是| 久久精品国产一区二区三区日韩| 色综合久久天天综合网| 在线观看免费视频污| 精品久久人妻av中文字幕| 精品国产综合| 婷婷激情小说网| 久久理论电影| 在线免费av观看| 欧美亚洲色图校园春色| 国产一区二区三区国产精品| 丝袜美腿中文字幕| 日韩精品视频在线观看免费| 四虎影视永久免费在线观看一区二区三区| 粉嫩绯色av一区二区在线观看| 欧美日韩亚洲综合一区二区三区| 国产成人高清视频| 在线免费视频一区| 亚洲一区电影777| 亚洲精品一区二区三区99| 精品黑人一区二区三区在线观看| 免费在线观看日韩av| 欧美顶级少妇做爰| 乱子伦一区二区| 国产成人精品三级麻豆| 久久免费视频精品| 成年人网站免费看| 678五月天丁香亚洲综合网| www黄色在线观看| 久久精品在线视频| 欧美色图麻豆| 国精产品一区一区| 国产成人综合自拍| 看电影就来5566av视频在线播放| 国内精品视频在线观看| 成 人片 黄 色 大 片| 一本大道香蕉8中文在线视频| www欧美成人18+| 国产youjizz在线| 第四色在线一区二区| 国产无套粉嫩白浆内谢的出处| 99视频在线观看免费| 国产精品高颜值在线观看| 成人午夜淫片100集| av大大超碰在线| 国产精品久久网站| 一区二区三区不卡在线观看| bt天堂新版中文在线地址| 麻豆久久久久久久久久| 久久91亚洲人成电影网站| 一本一道久久a久久精品逆3p| 要久久电视剧全集免费| 国内精品视频一区二区三区八戒| 国产精品无码一区二区桃花视频| 国产亚洲成aⅴ人片在线观看| 午夜精品免费在线观看| 国产欧美视频一区二区三区| 国产色无码精品视频国产| 日本不卡中文字幕| 免费日韩一区二区三区| 国产情侣一区二区三区| 色综合天天狠狠| 粉嫩久久99精品久久久久久夜| 欧美激情一级二级| 99久久自偷自偷国产精品不卡| 欧美一乱一性一交一视频| 免费无码毛片一区二区app| 丁香花在线高清完整版视频| 亚洲欧美日韩色图| 亚洲第一网站| 中文字幕一区二区三| 久久99精品久久久野外观看| 亚洲综合在线不卡| 亚洲欧美三级在线| 91亚洲国产成人精品性色| 日韩有码在线视频| 91久久精品一区二区三区| 亚洲一区二区五区| 久久黄色一级视频| 日本免费专区| 亚洲精品乱码久久久久久日本蜜臀| 亚洲美女综合网| 不卡视频一二三四| 国产精品视频一二三区| 日韩午夜在线视频| 日本韩国在线不卡| 国产亚洲一区二区三区不卡| 一二三四社区在线视频6| 男插女视频网站| 99热在线精品观看| 亚洲男人天堂2019| 国产三级生活片| 在线网址91| 97色伦图片97色伦在线电影| 亚洲大片免费观看| 国产精品一区免费在线| 亚洲欧美日韩第一区| 成人国产精品免费观看视频| 国产成人午夜性a一级毛片| 伊人成年综合网| 高清免费日韩| 欧美成人三级在线观看| 国产精品一区二区三区www| 91免费在线看片| 影音先锋一区| 国产免费久久久久| 你懂得在线观看| 91官网在线免费观看| 亚洲人av在线| 九色porn蝌蚪| 一级做a爱片久久毛片| 黄页视频在线播放| 精品亚洲国内自在自线福利| 日本中文字幕伦在线观看| 伊人久久综合网另类网站| 在线视频一区观看| 一本一道久久综合狠狠老| 好操啊在线观看免费视频| 超碰在线一区| 亚洲乱码国产乱码精品精可以看| 国产av无码专区亚洲av麻豆| h片在线观看视频| 精品久久久久中文慕人妻| 欧美丝袜在线观看| 欧美亚洲日本黄色| 激情小说中文字幕| 日韩av新片网| 亚洲精品视频免费| 中文字幕v亚洲ⅴv天堂| 免费一区二区三区在线视频| 操日韩av在线电影| 11024精品一区二区三区日韩| 欧美日韩亚洲不卡| 不卡av在线网站| 在线亚洲成人| 日本免费一区视频| 欧美日韩在线网站| 中文字幕人成乱码在线观看| 午夜精品福利在线| 醉酒壮男gay强迫野外xx| 亚洲成人av免费| 国产三级视频网站| 国产日韩欧美精品| 密臀av在线播放| 久久久久久久久久久国产精品| 日日骚一区二区网站| 性xxxxfreexxxxx欧美丶| 国产视频观看一区| 国产精品jk白丝蜜臀av小说| 久久国产精品二区| 久久综合久久美利坚合众国| 亚洲成人激情在线观看| 男女爱爱视频网站| 国产农村老头老太视频| 青青草成人影院| 五月婷婷激情久久| 99re6热在线精品视频播放速度| 日本va欧美va精品| 亚洲精品日日夜夜| 国产农村妇女精品久久| 久草视频这里只有精品| 国产精品12345| 免费亚洲电影| 中文字幕免费在线观看视频一区| 国产毛片久久久久久久| 热99这里只有精品| 视频精品一区| 久久一区二区三区喷水| 亚洲免费黄色网| 综合自拍亚洲综合图不卡区| 秋霞伦理一区| 久久免费视频99| 国产精品一区二区三区免费观看| 日本一本草久在线中文| 日韩欧美在线播放视频| 日本三级免费网站| 欧美另类bbbxxxxx另类| 岛国成人av| 九九久久精品这里久久网| 九色porny自拍视频在线播放| 日本黄在线观看| 国产精品视屏| 91久色国产| 在线观看亚洲精品视频| 一区二区三区四区在线免费观看| 精品中文字幕视频| 四虎影院影音| 久热久热免费视频中文字幕777| 九九精品在线| 欧美视频在线观看免费网址| 日本精品免费观看| 亚洲av无码国产精品久久不卡| eeuss性xxxxxx电影| 免费看的国产视频网站| 亚洲熟妇无码av在线播放| 欧美成人aaa片一区国产精品| 精品一区欧美| 成年女人色毛片免费| 欧美色图国产精品| 中文字幕黄色av| 亚洲精品你懂的| 免费一区二区三区视频导航| 国产视频中文字幕在线观看| 国产国产精品| 国产伦精品一区三区精东| 国内精品久久久久久中文字幕| 亚洲一区二区自拍| 在线丨暗呦小u女国产精品| 欧美午夜精品理论片| 综合国产视频| 国产cdts系列另类在线观看| 国产人成网在线播放va免费| 波多野结衣精品| 精品人妻少妇AV无码专区| 日本一区二区三区四区高清视频| 久9re热视频这里只有精品| 亚洲a∨精品一区二区三区导航| 极品少妇xxxx精品少妇| 欧美国产日韩二区| 污污的视频网站在线观看| 粉嫩精品导航导航| 日本激情视频一区二区三区| 欧美 日韩 亚洲 一区| 原创真实夫妻啪啪av| kk眼镜猥琐国模调教系列一区二区| 91视频 -- 69xx| 成人高清dvd| 91在线视频播放地址| 欧美白嫩的18sex少妇| 国产刺激高潮av| 欧美日韩视频在线一区二区| 日韩理论片中文av| 国产美女av| 中文字幕无码毛片免费看| 亚洲AV第二区国产精品| 日韩三级电影免费观看| 黄毛片在线观看| 97aⅴ精品视频一二三区| 美国三级日本三级久久99| 5566中文字幕| 成人午夜精品在线| 7878视频在线观看| 亚洲黄一区二区三区| 四虎永久在线观看| 337p日本欧洲亚洲大胆鲁鲁| 天堂网中文字幕| 日韩欧美成人区| 亚洲免费福利视频| 精品日产免费二区日产免费二区| 激情丁香综合五月| 国产变态拳头交视频一区二区| 在线看国产精品| 天天干,天天干| 亚欧精品在线视频| 91综合精品国产丝袜长腿久久| 亚洲一二三区在线观看| 欧美另类极品videosbest视频| 久久99国产精一区二区三区| 精品国产91久久久久久浪潮蜜月| 国产哺乳奶水91在线播放|