evgenyivanov
Ноя. 2, 2012 09:43:50
У меня есть xml, в котором есть русские символы. Когда я вывожу его на экран print xml русские символы не отображаются, вместо них печатается, что-то непонятное. Как это побороть?
odnochlen
Ноя. 2, 2012 09:55:36
Может выложишь, что именно тебе выводится, а то телепаты в отпуске.
evgenyivanov
Ноя. 2, 2012 10:08:41
odnochlen
Может выложишь, что именно тебе выводится, а то телепаты в отпуске.
ZerG
Ноя. 2, 2012 10:45:49
Извечная проблема Виндаус и кодировки в терминале!
Смените кодировку в файле ХМЛ на cp866 и будет вам счастие.
Ну и погуглите на ту же тему !
odnochlen
Ноя. 2, 2012 12:26:05
В xml текст в кодировке utf8. Не знаю, зачем тебе его в читаемом виде выводить в консоль, но попробуй print xml.decode('utf8')
evgenyivanov
Ноя. 2, 2012 12:49:54
odnochlen
В xml текст в кодировке utf8. Не знаю, зачем тебе его в читаемом виде выводить в консоль, но попробуй print xml.decode('utf8')
Я в дальнейшем его обрабатываю. Те поля, что по английски работают, а те, что с русскими символами - сбоят.
import xml.dom.minidom
import urllib
f = urllib.urlopen('http://samstar.ucoz.ru/news/rss/')
st= f.read()
print f.read()
print ">>>", st.decode('utf8')
f.close()
Выдает ошибку. см. вложенный файл
odnochlen
Ноя. 2, 2012 14:30:25
В юникодной строке есть символы, которые не могут быть декодированы в кодировку консоли (cp866)
print st.decode('utf8').encode('cp866', 'ignore')
# или так
print unicode(st, 'utf8').encode('cp866', 'ignore')
evgenyivanov
Ноя. 6, 2012 12:12:22
odnochlen
В юникодной строке есть символы, которые не могут быть декодированы в кодировку консоли (cp866)
Спасибо. На печать русские буквы выводятся. Но дальнейшее использование хмл
import xml.dom.minidom
import urllib
f = urllib.urlopen('http://samstar.ucoz.ru/news/rss/')
st= f.read().decode('utf8').encode('cp866', 'ignore')
print st
#print ">>>", st.decode('utf8').encode('cp866', 'ignore')
par1 = xml.dom.minidom.parseString(st)
data = par1.getElementsByTagName('title')
n= -1
for e in data:
for t in e.childNodes:
n = n +1
if (n > 0):
print t.data.decode('utf8')
f.close()
Причем, если я заменю тег на “link”, значение которого всегда - латиница, никакие ошибки не возникают.
odnochlen
Ноя. 6, 2012 14:45:57
Кодировать в cp866 нужно только для сосноли, для парсера это не надо.
pellon
Ноя. 6, 2012 15:46:32
простите, а что такое xml??
я видел файлы с таким фарматом. это както связано?
и чо такое парсер?