python2.7預設的ascii編碼,遇到中文時會出現一大堆毛病。
1、對於中文的輸出,特別是輸出到檔案中去,需要在編碼開題加上 #coding:utf-8,中文字元需要做相應的編碼轉換。如:
str = u'啦啦啦,德瑪西亞
'e=str.encode('utf-8')
with open('out.txt','w') as f:
f.write(e)
#而列印(print),直接列印就行了。
print str
2、對於字典是輸出。字典中包含中文時,輸出到檔案依舊想顯示為中文,需要做一些變換:
#!/usr/bin/python
# encoding:utf-8
import json
def dump(lst):
fp = open("lst.utf8", "w")
fp.write(json.dumps(lst, ensure_ascii=false))
fp.close()
if __name__ == '__main__':
dump([, ])
#結果為:
#[, ]
當字典中包含unicode編碼字元時候,需要將所有的unicode編碼轉換成utf-8編碼。
方法就是對每個關鍵字重新賦值,賦予轉碼後的值。
3、從檔案中讀取的時候,需要注意編碼問題外。還要注意某些軟體會在文字開頭插入bom。notepad++可以處理編碼問題,以及bom開頭帶來的問題。
以上兩步基本上可以解決所見到的所有編碼問題。算是慢慢明白廖雪峰老司機所說的僅需要記住unicode和utf-8編碼的原因了。
python2 7編碼問題
在使用python從庫里拿到乙個字段進行比較時,出現以下錯誤 ascii codec can t decode byte 0xe5 in position 3 ordinal not inrange 128 原因 python的str預設是ascii編碼,和unicode編碼衝突,而從資料庫中拿到的...
python2 7中文編碼 python2 7
我從外部api中獲得了乙個字串 u4ece u8d77 u70b9 u5411 u6b63 u5357 u65b9 u5411 u51fa u53d1,u884c u9a76170 u7c73,u76f4 u884c u8fdb u5165 u4e2d u5173 u6751 u4e1c u8def...
python2 7解決中文編碼問題
粗略地介紹下編碼知識,首先我們認為是位元組是面向計算機的,字元是面向人類的,相互的轉換就是解碼和編碼,在各種編碼中,ascii碼是7位,用不到乙個位元組,7個位元來表示字元,這樣最多也只有127個字元,iso8859 1用乙個位元組8個位元表示字元,可以表示256個字元,gb2312是用2個位元組,...