2013-03-30 43 views
1

呵呵,好吧,所以我有編碼這個大問題,我只是不知道如何處理它。經過兩天的谷歌搜索,我認爲我只是用完了選項:)Python中的Unicode問題

我想要做的是以下幾點。在一個文本框

  1. 文本放在網站
  2. 在將文本發送到後端(Python編寫)爲
  3. 使用文本創建:
    一個。 PIL中的圖像。 b。 MySQL中的條目。

現在,當我們談論普通字符時,所有這些工作都很流暢。但是當我嘗試使用韓文,波蘭文,日文字符時,我在圖像和數據庫中都插入了非常奇怪的外觀字符。在下面的例子中,我將使用三個字符的波蘭字符串 - 「ąść」。

這是我在谷歌搜索之後所做的。

插入.htaccess中的以下內容:

我的MySQL數據庫的
#!/usr/bin/python 
# -*- coding: utf-8 -*- 

所有被編碼在 「utf8_unicode_ci」:

AddCharset UTF-8 .py .css .js .html 

我的Python文件現在開始。

現在,這裏的什麼,我試圖做...一個例子每當我解析「ASC」(三級波蘭字符)它被保存在數據庫中,生成的圖像上顯示爲:

ąść 

現在有幾個調試問題。我直接進入Python,並將以下內容分配給通常具有文本解析的變量(value_text1)(因此 - 沒有文本解析,只需設置固定文本以生成圖像並將其放入數據庫中):

A)如果我使用value_text1 = 'ąść',那麼我會得到…ść

B)如果我去value_text1 = u'ąść'我收到以下錯誤信息:

UnicodeEncodeError: 'latin-1' codec can't encode characters in position 0-1: ordinal not in range(256)

C)如果我有value_text1 = u'ąść'.encode('UTF-8')去我得到…ść結果。 D)如果我用value_text1 = u'\u0105\u015B\u0107'.encode('UTF-8')去,其中"\u0105\u015B\u0107"是「ąść」的實際Unicode,我得到…ść作爲結果。

真的不知道我在做什麼錯 - 服務器設置,python文件設置,錯誤的命令?將欣賞任何想法,預先感謝你。

+1

你是如何渲染你的文字在PIL? – nneonneo

+0

你從哪裏得到錯誤信息?什麼是引發錯誤信息的代碼? – BrenBarn

+0

也許你的編輯器沒有在utf-8中保存非ASCII字符。 – thkang

回答

1

如果我嘗試在一個交互的shell或從.py文件

#!/usr/bin/python 
# -*- coding: utf-8 -*- 
value_text1 = u'ąść' 
print value_text1 

它完美地適合我,所以我想這件事情與你的服務器配置。

順便說一句,請確保在連接到服務器時使用charset =「utf-8」。

+0

這可能是...你知道我在哪裏可以嘗試搜索這個配置嗎?這是一個Apache的東西或.htaccess或其他? – teeZee

+0

假設你正在使用MySQLdb的模塊,只需添加字符集=「utf-8」你MySQLdb.connect()調用:) – jazzpi

+1

@teeZee:或charset =「utf-8」,只注意到... – jazzpi