摘要:代碼參考了這里上文對各種系統無法輸出奇葩編碼的字符做了總結,本文中只針對下編碼但想執行編碼的文件進行修改。這樣就實現了下和下兼容了當然如果不知道原來是什么編碼,但想轉成編碼的話,將上面的條件刪掉即可。
代碼參考了這里:http://wiki.python.org/moin/P...
上文對各種系統無法輸出奇葩編碼的字符做了總結,本文中只針對windows cmd下GBK編碼(cp936)但想執行utf-8編碼的Python文件進行修改。
原理就是:
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
保存成一個py文件,直接import即可。
這樣就實現了linux下和windows下兼容了~
當然如果不知道原來是什么編碼,但想轉成utf-8編碼的話,將上面的if條件刪掉即可。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/38090.html
摘要:值得注意的是,有的編碼方案不一定能表示某些信息,這時編碼就會失敗,比如就不能用來表示中文。數組的每一項是一個字節,用來表示。所以對于字符串來說,其長度等于編碼后字節的長度。所以,讓來編碼解碼中文,就超出了其能力范圍。 在人機交互之字符編碼 一文中對字符編碼進行了詳細的討論,并通過一些簡單的小程序驗證了我們對于字符編碼的認識。但僅了解這篇文章的內容,并不能幫我們在日常編程中躲過一些字符編...
摘要:關于解決亂碼問題的終極解決方案有個特別好玩的現象,當我們為了編碼頭疼的時候,幾乎搜索到所有的文章都會先發一通牢騷。另外,關于的亂碼問題,又是一個新的較長篇章。 關于解決Python亂碼問題的終極解決方案 (TL;DR) showImg(https://segmentfault.com/img/remote/1460000013229494?w=809&h=184); 有個特別好玩的現象...
摘要:使用中文替代中文中文編碼中文編碼中有以上兩種聲明字符串變量的方式,它們的主要區別是編碼格式的不同,其中,的編碼格式和文件聲明的編碼格式一致,而的編碼格式則是。 字符串是Python中最常用的數據類型,而且很多時候你會用到一些不屬于標準ASCII字符集的字符,這時候代碼就很可能拋出UnicodeDecodeError: ascii codec cant decode byte 0xc4 ...
摘要:常量中,通常用大寫的變量名表示常量。含有中文的無法用編碼,因為中文編碼的范圍超過了編碼的范圍,會報錯。個中文字符經過編碼后通常會占用個字節,而個英文字符只占用個字節。 寫在前面的話不知不覺畢業已經三年多了,現在的工作中,極少涉及代碼的工作。主要接觸的項目是BI的建設,做的更多的類似產品經理的工作,或者比較初級的數據分析的工作。因為沒有美工和測試小伙伴,所以還額外承包了這兩項工作的我,偶...
閱讀 2519·2023-04-26 02:47
閱讀 3004·2023-04-26 00:42
閱讀 873·2021-10-12 10:12
閱讀 1381·2021-09-29 09:35
閱讀 1695·2021-09-26 09:55
閱讀 483·2019-08-30 14:00
閱讀 1539·2019-08-29 12:57
閱讀 2358·2019-08-28 18:00