2013-07-08 223 views
0

我正在致力於從一些網站獲取一些數據然後存儲到數據庫中的項目。但這些網站包含不同的字符集,如utf-8,gbk。獲取的數據是unicode,所以我想知道何時轉換爲字符串是正確的方法。我現在立即轉換爲字符串,但似乎python建議儘可能保持unicode,我不明白爲什麼?因爲我們一直不知道unicode對象的字符集。何時將unicode轉換爲字符串?

+0

Unicode是每個其他字符集的超集,因此它對於保存角色是安全的。 –

回答

1

unicode s不要一個字符集;他們是純文本。在僅接受字節的介質中存儲或傳輸時,只能轉換爲字節串。

1

在你的應用程序來處理文本的建議是:

  1. 從一些地方獲取輸入字節(編碼字符串)
  2. 對其進行解碼成UnicodeUnicode您的應用程序內工作。
  3. 無論何時您想要輸出文本,都要對其進行編碼。

如果您抓取網頁,我已經看到BeautifulSoup和其他庫,它們爲Unicode轉換傳入字節的工作。所以在你的應用程序中,你可以使用Unicode來處理它們。

如果你想將它存儲在數據庫中,可能是該數據庫中utf-8編碼,如果沒有,學什麼它的編碼是和當你準備寫信息到數據庫,對其進行編碼第一。

text = text.encode('utf-8') # or the encode used by your DB 
db.persist(text) # pseudocode here ;) 

這樣你unicode的保護層在您的應用程序的前面,輸入和輸出。

希望這會有所幫助!

+1

一個好的數據庫適配器需要'unicode'併爲你找出字符集。 –

+0

是的,我使用'BeautifulSoup'從網站獲取數據。但我認爲我從'BeautifulSoup'獲得的unicode可能無法使用'utf-8'字符集進行解碼,所以我不能僅使用'.encode(「utf-8」)'轉換爲字符串。所以這裏是一個問題:如果我不盡快轉換爲字符串,當我在我的程序中執行一些字符串過程(比如正則表達式匹配)時,我將會丟失。 –

+0

任何unicode都可以解碼,我不太明白你的意思。關於正則表達式,他們可以很好地處理unicode,你可以很好地將Unicode應用於正則表達式。 –

相關問題