這是我一直堅持的編碼問題幾個星期的第二次。我已經在這個問題上花了很長時間了,我希望能得到任何幫助。的Unicode在Django的網站
這就是我想做的事:
1)在我的電腦上選擇從MySQL表中的一些行。
2)寫這些行到一個文本文件中。
3)將文本文件傳輸到我的Amazon EC2 Ubuntu實例。
4)寫文本文件的內容到一個MySQL數據庫。
5)讓Django從#4中的數據庫中選擇一些行。在網站上
6)顯示。
在#1,我只是一個普通的SELECT語句。 在#2,我這樣做:
file = codecs.open('commentsfordjango.txt', encoding = 'utf-8', mode='w')
file.write(fullcomment.decode('utf8') + '\n\n\n\n\n\n')
第2步後,我在Windows中打開.txt文件,我可以看到所有的實際中國人物沒有任何錯誤。
在步驟#3中,我只是使用WinSCP傳輸文件。 在步驟#4中,我這樣做:
file = open('/usr/local/src/blog/commentsfordjango.txt', 'r')
cursor.execute("INSERT INTO polls_poll (commenttext, pos, neu, neg) VALUES (%s, 0, 0, 0)", line)
在步驟#5中,我在views.py
這樣做:我簡單地返回其對應於模型中的對象。我的模型有一個unicode函數,但我沒有調用它,因爲我默認讀取它時,它已在調用您的對象時調用。
在#6,我的HTML文件,在該文件的頂部以下行:
<meta charset="utf-8" />
而且,我改變了我的Apache默認編碼爲Unicode。我還確保第4步中的SQL數據庫使用Unicode。
然而,這一切後,我的網站還顯示了一堆不可讀的,奇怪的字符,例如:人在åšï¼Œå¤©åœ¨çœ
任何幫助將非常感謝 - 我已經嘗試了很多涉及.decode()和.encode('utf-8')的變體,並且已經在這個問題上花了很長時間了!
你實際上想寫入.encode()。爲什麼在一個位置使用codecs.open()而不是其他位置? – monkut 2012-07-19 03:34:46
「另外,我將我的apache編碼默認值更改爲unicode」 - 這是無意義的,unicode不是一種編碼。 – 2012-07-19 03:40:12
當您打開該文件進行檢查時,是否確保使用正確的字符集進行保存? – 2012-07-19 05:14:59