pythonunicodegoslatebengali

printing unicode for bengali


I'm using goslate for google translate API

I can translate Bengali to Engliash -

>>> import goslate

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

good

But, problem in arising when I want to translate English to Bengali.

>>> 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>

What should I do?

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

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

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

Solution

  • This works for me

    #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)
    

    This prints "ভাল" as expected. print st.encode('utf-8') works too.