为孟加拉打印unicode

时间:2015-02-17 06:31:32

标签: python unicode goslate

我使用goslate进行谷歌翻译API

我可以将孟加拉语翻译成英格利什语 -

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

2 个答案:

答案 0 :(得分: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)

这打印&#34;ভাল&#34;正如所料。 print st.encode('utf-8')也有效。

答案 1 :(得分:0)

这与goslate无关。您的问题是,当使用控制台字符编码无法表示Unicode字符时,print u'\u09ad\u09be\u09b2'可以正常工作。

您需要将编码更改为可以表示Unicode字符的编码,例如utf-8或使用Unicode API,例如WriteConsoleW,假设您在Windows上 - 如果您不在Windows上,那么只需配置您的环境以使用utf-8。

WriteConsoleW usage is complicated虽然有simple to use win_unicode_console package on Python 3。后一个链接还显示了如何将打印的Unicode文本保存到文件(打印Unicode,设置PYTHONIOENCODING)。