2

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
4

2 回答 2

1

这对我有用

#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')也可以。

于 2015-02-17T13:19:01.200 回答
0

肯定是无关的goslate。您的问题是在print u'\u09ad\u09be\u09b2'无法使用控制台字符编码表示 Unicode 字符时使其工作。

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

WriteConsoleW尽管Python 3 上有一个简单易用的包,但win_unicode_console用法很复杂。后一个链接还显示了如何将打印的 Unicode 文本保存到文件中(print Unicode, set PYTHONIOENCODING)。

于 2015-02-17T13:44:12.923 回答