摘要:根本原因字符串在內(nèi)部的表示是編碼,因此,在做編碼轉(zhuǎn)換時(shí),通常需要以作為中間編碼,即先將其他編碼的字符串解碼成,再從編成另一種編碼。引用的中文編碼問題
根本原因:
字符串在Python內(nèi)部的表示是unicode編碼,因此,在做編碼轉(zhuǎn)換時(shí),通常需要以unicode 作為中間編碼,即先將其他編碼的字符串解碼(decode)成unicode,再從unicode編(encode) 成另一種編碼。但是,Python 2.x的默認(rèn)編碼格式是ASCII,就是說,在沒有指定Python源碼編碼 格式的情況下,源碼中的所有字符都會被默認(rèn)為ASCII碼。也因?yàn)檫@個根本原因,在Python 2.x中 經(jīng)常會遇到UnicodeDecodeError或者UnicodeEncodeError的異常。
常見的幾種編碼異常
當(dāng)然,除了上面列出的幾種出現(xiàn)異常的情況之外還有很多可能出現(xiàn)異常的例子,這里就不在一一
說明了。
最后分享一個終極原則:
decode early, unicode everywhere, encode late,即:在輸入或者聲明字符串的時(shí)候, 盡早地使用decode方法將字符串轉(zhuǎn)化成unicode編碼格式;然后在程序內(nèi)使用字符串的時(shí)候統(tǒng)一使用 unicode格式進(jìn)行處理,比如字符串拼接、字符串替換、獲取字符串的長度等操作;最后,在輸出字符 串的時(shí)候(控制臺/網(wǎng)頁/文件),通過encode方法將字符串轉(zhuǎn)化為你所想要的編碼格式,比如utf-8等。
引用WuXianglong的python中文編碼問題
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/37555.html
摘要:值得注意的是,有的編碼方案不一定能表示某些信息,這時(shí)編碼就會失敗,比如就不能用來表示中文。數(shù)組的每一項(xiàng)是一個字節(jié),用來表示。所以對于字符串來說,其長度等于編碼后字節(jié)的長度。所以,讓來編碼解碼中文,就超出了其能力范圍。 在人機(jī)交互之字符編碼 一文中對字符編碼進(jìn)行了詳細(xì)的討論,并通過一些簡單的小程序驗(yàn)證了我們對于字符編碼的認(rèn)識。但僅了解這篇文章的內(nèi)容,并不能幫我們在日常編程中躲過一些字符編...
摘要:之痛原文地址譯者校正實(shí)用編程指南這是我在所做的演講。事實(shí)一和二共同造成了計(jì)算機(jī)設(shè)備結(jié)構(gòu)與世界人類需求的一個沖突。就是為了解決之前的老的字符集問題。值意味著,失敗時(shí)將會返回一個標(biāo)準(zhǔn)的替代字符。將使用進(jìn)行了解碼。 Unicode之痛原文地址: http://nedbatchelder.com/text...譯者: yudun1989 校正: sicklife實(shí)用Unicode編程指南這是...
摘要:而他們的中文釋義,就是對新手的最大陷阱編碼。而碼,也就是美國信息交換標(biāo)準(zhǔn)碼,年發(fā)布,位字符編碼中影響最大的一種。 編碼,還是編碼! python2的直鉤——編碼異常 當(dāng)你用python打開一篇中文文檔,準(zhǔn)備讀取里面的數(shù)據(jù)開始實(shí)驗(yàn)...當(dāng)你處理好你的數(shù)據(jù),打算打印出易于閱讀的結(jié)果給boss檢查...甚至當(dāng)你剛剛開始編寫自己的代碼,就寫了一句話... text = 什么鬼 只要你開始運(yùn)行自...
摘要:,,等屬于不同的字符集,轉(zhuǎn)換編碼就是在它們中的任意兩者間進(jìn)行。一般個人用的電腦上控制臺基本上都是編碼的,但運(yùn)維的機(jī)器上基本全是,中文的時(shí)候就會有酸爽的問題。 總結(jié)總結(jié),本文僅適用于python2.x 默認(rèn)編碼與開頭聲明 首先是開頭的地方聲明編碼 # coding: utf8 這個東西的用處是聲明文件編碼為utf8(要寫在前兩行內(nèi)),不然文件里如果有中文,比如 a = 美麗 b = u美...
摘要:關(guān)于解決亂碼問題的終極解決方案有個特別好玩的現(xiàn)象,當(dāng)我們?yōu)榱司幋a頭疼的時(shí)候,幾乎搜索到所有的文章都會先發(fā)一通牢騷。另外,關(guān)于的亂碼問題,又是一個新的較長篇章。 關(guān)于解決Python亂碼問題的終極解決方案 (TL;DR) showImg(https://segmentfault.com/img/remote/1460000013229494?w=809&h=184); 有個特別好玩的現(xiàn)象...
閱讀 1025·2021-09-26 09:55
閱讀 3565·2021-09-24 10:30
閱讀 1369·2021-09-08 09:36
閱讀 2556·2021-09-07 09:58
閱讀 606·2019-08-30 15:56
閱讀 773·2019-08-29 18:32
閱讀 3615·2019-08-29 15:13
閱讀 1845·2019-08-29 13:49