剛剛突然查到資料~
發現txt檔案裡面的"unicode" 基本上是 "utf-16"的意思
而且如果我的中文語料一開始如果是以utf-8存取,
要重新讓他以utf-16儲存的話,
會有少部分字變成亂碼
要先把檔案以ANSI儲存,
再重新用python寫入儲存成utf-16才會變成正常的
所以目前是解決這個小小的怪問題:
附上我的codes, 感謝有這個版!!
import codecs
import os
import re
cwd = 'ckip_trans' # raw data directory
for i in os.listdir(cwd):
file = codecs.open('ckip_trans_out/'+i,'w', encoding='utf-16') #output
asbc = codecs.open('ckip_trans/'+i).read().decode('cp950')
file.write(asbc)
file.close()
謝謝~ 希望對之後的人有一些小幫助
作者: tacosung (taco) 看板: Python
標題: [問題] txt檔案裡面unicode的儲存轉換
時間: Mon Mar 5 18:21:06 2012
大家好~
我目前手邊有一個單機版的斷詞系統,
每一筆語料都儲存在txt檔案裡面,
可是現在問題是...
那個txt檔案如果不是選擇'unicode'儲存的話,
送進去斷詞後, 都會變成亂碼!
(即使是選擇以'utf-8'儲存, 回傳結果一樣是亂碼)
想問一下,
如果要用python寫一個script讓所有的txt檔案
儲存成txt裡面的 'unicode'模式,
要怎麼在encoding選擇?
因為encoding裡面沒有"unicode",
只有'utf-8','cp950'等等之類的...
先感謝回答, 這困擾我一陣子了 = =
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 115.43.113.85
→ mars90226:unicode是概念,utf-8才是實際的編碼方式 03/05 18:31
→ mars90226:還有utf-16,只是跟我們亞洲人比較無關 03/05 18:31
→ tacosung:對~ 沒錯~ 只是我現在很苦惱只有當txt檔案儲存成 03/05 18:42
→ tacosung:'unicode'才會斷詞正常, 現在我不知道txt裡面的'unicode' 03/05 18:44
→ tacosung:到底是指哪一種unicode編碼(語料都是中文的)... 03/05 18:44
→ tacosung:我試過用python讀進檔案再decode('utf-8')就可以讀取正常 03/05 18:45
※ 編輯: tacosung 來自: 115.43.113.85 (03/05 19:17)
→ mars90226:我想應該是utf-8,這個可能是根據不同windows語言設定的 03/06 14:16
→ mars90226:應該說是不同語言版本的Windows 03/06 14:16