python2 7編碼的問題

2021-07-30 01:44:50 字數 893 閱讀 8992

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個位元組,...