關于Python的編碼一直是一個痛……半夜研究Scrapy的時候抓取了一下内容,抓取了一些中文内容。都是
1\u5173\u4e8e
的Unicode編碼。
我想将取得的内容轉成UTF-8正常的顯示中文應該怎麼做?在Scrapy看得有點暈,Python轉編碼還好。
表示Scrapy取的好像是
1list類型
不能對該類型進行編碼解碼吧?
主要是我不知道怎麼寫這段代碼的說……
另,假如我入庫MySQL以
1charset='utf8'
不知道會不會正常的轉成中文UTF-8而不是Unicode?
查閱了不少資料,有點迷迷糊糊的沒看懂,遂到SF問一下~
thanks~
我遇到過一樣的問題,可以參考
http://git.oschina.net/ldshuang/imax-spider/commit/1d05d7bafdf7758f7b422cc1133abf493bf55086
這個所說的list類型是個什麼樣子?list裡面儲存多行所抓取的字元串?那就直接for s in strs取出,encode()為utf-8再儲存就行。
或者一個list就是一個抓取的字元串?可python的字元串本質也就是list啊。””.join()試試
\u5173\u4e8e 這就是utf8
http://zh.wikipedia.org/wiki/UTF-8
建議先去弄清楚unicode、UTF、UCS
1
2
3for line in list:
line = unicode(line,"UTF-8")
#do something..
這樣應該可以把。
我最近用結巴分詞也遇到過類似問題,然後上網查最後這樣解決的(不過我是中文寫入檔案的資料庫會不會不一樣就不知道了):
1.如 @tengyun 所言,對于要輸出的元素 a.encode(‘utf-8’)
2.并且在程式的開頭加encoding & 重載sys。。。
1
2
3
4#encoding=utf-8
import sys
reload(sys)
sys.setdaulftencoding('utf-8')
題主還是先搞明白unicode和utf-8是什麼關系吧。
List類型你也是要一個一個item地插入資料庫,隻要對每個item都進行轉碼操作即可,例如
1
2for ii in itemlist:
str = ii.encode('utf-8')
更多scrapy相關的内容,可以看看這個部落格,http://tech.my-coffees.com
為了大家不再百度找答案。這裡放上答案:
str=json.dumps(dict(item),ensure_ascii=False)+”\n”;
str=unicode.encode(str,’utf-8′);