很抱歉,如果这已在其他地方得到解答,但我无法找到解决问题的方法。
我正在阅读带有服务参考文件的文件。来自卫星接收器的名字。我正在尝试规范化服务名称,但问题是该文件可能包含来自许多不同卫星和许多不同语言的数据。
我有这个代码处理了一些爱尔兰名字,将RTÉOne改为RTE One等。
name = unicodedata.normalize('NFKD', unicode(name, 'utf_8')).encode('ASCII', 'ignore')
从输入文件中读取名称,如下所示:
RTÉ One
一切正常,但后来我遇到了这样的服务名称:
ΉπειÏος TV1
它无法处理上面的编解码器,显然不是utf_8?
我尝试将上面的代码更改为:
name = unicodedata.normalize('NFKD', force_decode(name)).encode('ASCII', 'ignore')
force_decode的功能如下:
def force_decode(string, codecs=['latin_1', 'cp857', 'cp866', 'cp1252', 'cp855', 'iso8859_5', 'iso8859_9', 'utf_8']):
for i in codecs:
try:
return string.decode(i)
except (Exception) as exception:
print "Error decoding name!! ", exception
pass
print "cannot decode url %s" % ([string])
现在发生的事情是上面的内容仅仅是TV1。我想,如果我能够解码任何ΉÏμÎÎÎÎÏÏÏ,,,,,,,,
任何人都知道这是否可行?
提前致谢。