2011-05-17 43 views
2

我使用Django 1.3。 你會如此善良,回答我一個問題。 我從我的數據庫中,編碼設置爲untf8 Unicode的Django的解碼UTF字符 - \ u0411 \ u0435 \ u0441 \ u0435 \ u0434 \ \ u043a u0430 - 以cyrilic串

settings.py 
DEFAULT_CHARSET = 'utf-8' 

file.py 
# -*- coding: utf-8 -*- 
def get_gift(gift_id): 
    gift = Gift.objects.get(id__exact = gift_id, is_visible = True) 
    return gift 

def output(): 
    gift = get_gift(gift_id) 
    title = gift.name.encode('utf-8') 
    return HttpResponse(title) 

對此我越來越\ u0411 \ u0435 \ u0441 \ u0435 \ u0434 \ u043a \ u0430讀取數據,但它應該是在俄羅斯(cyrilic)

我怎樣才能解決這個問題?

+0

你怎麼樣刪除這個多餘的'gift.name.encode( 'UTF-8')'? – 2011-05-17 09:08:08

+0

我已刪除編碼(「UTF-8」),並有一個成功,如果我有一個代碼 - 返回的HttpResponse(名稱)。因此,這意味着json.dumps(名稱),其轉換爲恐怖... – Roman 2011-05-17 09:15:36

+1

感謝大家。我找到了一個解決方案 - 返回HttpResponse(json.dumps(info).decode('raw-unicode-escape')。encode('utf-8')) – Roman 2011-05-17 09:18:45

回答

0

經常發生在你有Unicode的非羅馬文字數據,但你不能顯示它 - 通常是因爲你想展示給通過應用程序的用戶,不支持Unicode,或因爲你需要的字體是不可訪問的。您可以將Unicode字符表示爲「???????」或「\ 15BA \ 15A0 \ 1610 ...」,但對於真正想要閱讀文字內容的用戶而言,這幾乎是無用的。

Unidecode提供的是一個函數'unidecode(...)',它取出Unicode數據並嘗試用ASCII碼錶示它(即可在0x00和0x7F之間顯示的通用字符)。

該表示幾乎總是嘗試在音譯 - 即,用羅馬字母表示由某些其他書寫系統中的文本表達的發音。 (見上面的例子)

More information here

嘗試pip install Unidecode