Python 2.7中的西里尔字符

时间:2014-11-27 10:21:41

标签: python python-2.7 utf-8 cyrillic

该函数使用Google Places API返回半径内的地点。确切地说,我使用this库来处理任务。

问题是西里尔符号如下所示:

  

ÐОСбÐμÑ€±Ð°Ð½ÐºÐоÑÑии,КиÐμвÑкоμμ   Ð¾Ñ,Ð'ÐμлÐμниÐμâ-14

我尝试了these个建议。我也试过这个:

pname = place.name
uni = unicode(place.name)

而且:

convertedname = pname.encode(encoding='UTF-8', errors='strict')

没有任何帮助。我还能尝试什么?

2 个答案:

答案 0 :(得分:0)

  
    

列表(字节阵列( “надра”))

         

[208,189,208,176,208,180,209,128,208,176]

  

那是UTF-8。如果输出终端设置为UTF-8,则基本上不需要编码或解码。但是读取该字符串的正确方法是使用string.decode('utf-8')将其转换为正确的Unicode字符串,然后在输出到您的终端支持的任何编码之前对其进行编码(看起来模糊地像... code page 1250或{ {3}}?)。

iso-8859-2显示208(0xD0)以六种不同的编码映射到Đ,所以我猜想你正在使用其中一种。剩下的就是我的推测。

所以,基本上,

pname=place.name.decode('utf-8')

显然,您还需要将其编码为适合您控制台的输出编码,或者设置控制台以正确支持UTF-8。如果你的终端目前确实设置为cp1250,它根本不支持西里尔语输出。

答案 1 :(得分:0)

我的终端和浏览器编码是utf-8,问题出在浏览器中显示文本时。在webapp2 .py文件中取消注释后,问题解决了:

path = os.path.join(os.path.dirname(file), 'index.html')
self.response.out.write(template.render(path, template_values)) 

考虑模板和这样的东西。你的回答帮助我找到了解决方案。谢谢!