摘要:代碼參考了這里上文對(duì)各種系統(tǒng)無(wú)法輸出奇葩編碼的字符做了總結(jié),本文中只針對(duì)下編碼但想執(zhí)行編碼的文件進(jìn)行修改。這樣就實(shí)現(xiàn)了下和下兼容了當(dāng)然如果不知道原來(lái)是什么編碼,但想轉(zhuǎn)成編碼的話,將上面的條件刪掉即可。
代碼參考了這里:http://wiki.python.org/moin/P...
上文對(duì)各種系統(tǒng)無(wú)法輸出奇葩編碼的字符做了總結(jié),本文中只針對(duì)windows cmd下GBK編碼(cp936)但想執(zhí)行utf-8編碼的Python文件進(jìn)行修改。
原理就是:
Another is to put an intercept between sys.stdout, and the text wrapper.
更多還是看參考文章吧,這里直接貼代碼:
[python] view plain copy
-- coding: utf-8 --import sys
class UnicodeStreamFilter:
def __init__(self, target): self.target = target self.encoding = "utf-8" self.errors = "replace" self.encode_to = self.target.encoding def write(self, s): if type(s) == str: s = s.decode("utf-8") s = s.encode(self.encode_to, self.errors).decode(self.encode_to) self.target.write(s)
if sys.stdout.encoding == "cp936":
sys.stdout = UnicodeStreamFilter(sys.stdout)
if name == "__main__":
a = "你好" b = u"你好" print a print b
保存成一個(gè)py文件,直接import即可。
這樣就實(shí)現(xiàn)了linux下和windows下兼容了~
當(dāng)然如果不知道原來(lái)是什么編碼,但想轉(zhuǎn)成utf-8編碼的話,將上面的if條件刪掉即可。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/38090.html
摘要:值得注意的是,有的編碼方案不一定能表示某些信息,這時(shí)編碼就會(huì)失敗,比如就不能用來(lái)表示中文。數(shù)組的每一項(xiàng)是一個(gè)字節(jié),用來(lái)表示。所以對(duì)于字符串來(lái)說(shuō),其長(zhǎng)度等于編碼后字節(jié)的長(zhǎng)度。所以,讓來(lái)編碼解碼中文,就超出了其能力范圍。 在人機(jī)交互之字符編碼 一文中對(duì)字符編碼進(jìn)行了詳細(xì)的討論,并通過一些簡(jiǎn)單的小程序驗(yàn)證了我們對(duì)于字符編碼的認(rèn)識(shí)。但僅了解這篇文章的內(nèi)容,并不能幫我們?cè)谌粘>幊讨卸氵^一些字符編...
摘要:關(guān)于解決亂碼問題的終極解決方案有個(gè)特別好玩的現(xiàn)象,當(dāng)我們?yōu)榱司幋a頭疼的時(shí)候,幾乎搜索到所有的文章都會(huì)先發(fā)一通牢騷。另外,關(guān)于的亂碼問題,又是一個(gè)新的較長(zhǎng)篇章。 關(guān)于解決Python亂碼問題的終極解決方案 (TL;DR) showImg(https://segmentfault.com/img/remote/1460000013229494?w=809&h=184); 有個(gè)特別好玩的現(xiàn)象...
摘要:使用中文替代中文中文編碼中文編碼中有以上兩種聲明字符串變量的方式,它們的主要區(qū)別是編碼格式的不同,其中,的編碼格式和文件聲明的編碼格式一致,而的編碼格式則是。 字符串是Python中最常用的數(shù)據(jù)類型,而且很多時(shí)候你會(huì)用到一些不屬于標(biāo)準(zhǔn)ASCII字符集的字符,這時(shí)候代碼就很可能拋出UnicodeDecodeError: ascii codec cant decode byte 0xc4 ...
摘要:常量中,通常用大寫的變量名表示常量。含有中文的無(wú)法用編碼,因?yàn)橹形木幋a的范圍超過了編碼的范圍,會(huì)報(bào)錯(cuò)。個(gè)中文字符經(jīng)過編碼后通常會(huì)占用個(gè)字節(jié),而個(gè)英文字符只占用個(gè)字節(jié)。 寫在前面的話不知不覺畢業(yè)已經(jīng)三年多了,現(xiàn)在的工作中,極少涉及代碼的工作。主要接觸的項(xiàng)目是BI的建設(shè),做的更多的類似產(chǎn)品經(jīng)理的工作,或者比較初級(jí)的數(shù)據(jù)分析的工作。因?yàn)闆]有美工和測(cè)試小伙伴,所以還額外承包了這兩項(xiàng)工作的我,偶...
閱讀 2763·2023-04-26 02:47
閱讀 3129·2023-04-26 00:42
閱讀 1003·2021-10-12 10:12
閱讀 1524·2021-09-29 09:35
閱讀 1857·2021-09-26 09:55
閱讀 613·2019-08-30 14:00
閱讀 1654·2019-08-29 12:57
閱讀 2480·2019-08-28 18:00