2015-02-17 2 views
0

Я использую goslate для Google Translate APIпечать юникода для бенгальского

Я могу перевести Бенгальский на Engliash -

>>> import goslate 

>>> gs = goslate.Goslate() 
>>> S = gs.translate("ভাল", 'en') 
>>> S 

good 

Но проблема в возникающих, когда я хочу перевести с английского на бенгальский.

>>> import goslate 

>>> gs = goslate.Goslate() 
>>> S = gs.translate("good", 'bn') 
>>> S 

Eoor:

return codecs.charmap_encode(input,errors,encoding_table) 
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-2:  character maps to <undefined> 

Что я должен делать?

print repr(S) 
output: u'\u09ad\u09be\u09b2' 

print("ভাল") 
output: ভাল 

print(u"ভাল") # this gives UnicodeEncodeError 
+0

проверьте этот вопрос, я думаю, он также может ответить на ваш вопрос: http://stackoverflow.com/questions/15162398/print-an-arabic-unicode-string-in-pythonx-y – Elisha

+0

no. То, что не помогает – aerokite

+0

показать нам 'repr (S)' или 'ascii (S)' (Python 3). Вероятно, это не связано с «гослатом». Что произойдет, если вы напечатаете (u "ভাল") '? – jfs

ответ

0

Это работает для меня

#coding: utf-8 

from sys import setdefaultencoding, getdefaultencoding 

d=getdefaultencoding() 
if d != "utf-8": 
    setdefaultencoding('utf-8') 
st="ভাল" 
f=open('test.txt','w') 
f.write(st.encode('utf-8')) 
f.close() 
if d != "utf-8": 
    setdefaultencoding(d) 

Печатает "ভাল", как и ожидалось. print st.encode('utf-8') работает тоже.

+0

Он должен работать на самом деле. Но это дает мне «à|྾». Что мне нужно делать? могут быть некоторые изменения, которые мне нужны в IDLE? – aerokite

+0

Даже '#coding: ...' не помогает? – ForceBru

+0

print st.encode ('utf-8') -> ÃÂÂÂÂÂÂÂÂÃÃÃÃò – aerokite

0

Это, безусловно, не связано с goslate. Ваша задача состоит в том, чтобы сделать print u'\u09ad\u09be\u09b2' работать, когда символы Unicode не могут быть представлены с использованием кодировки символов консоли.

Вам необходимо изменить кодировку на тот, который может представлять символы Unicode, такие как utf-8, или использовать Unicode API, например WriteConsoleW, если вы находитесь в Windows - если вы не находитесь в Windows, тогда просто настройте свою среду использовать utf-8.

WriteConsoleW usage is complicated хотя есть simple to use win_unicode_console package on Python 3. Последняя ссылка также показывает, как сохранить напечатанный текст Юникода в файл (напечатайте Юникод, установите PYTHONIOENCODING).

Смежные вопросы