Форум сайта python.su
Всем привет. Я не являюсь программистом питона, но есть вопрос.
Так вышло, что результаты моих программ обрабатываются в питоне. Результаты моих программ - это корректный XML (точнее RSS feed) в кодировке utf-8. Так вот, питон ругается на некорректные символы в моем XML'е (например, символ 0xab - левая кавычка-ёлочка).
Разбираясь в проблеме, я нахожу документ (http://www.w3.org/TR/2000/REC-xml-20001006#NT-Char), в котором специфицируются стандартные для XML символы. Судя по этому документу, символ 0xab входит в число корректных.
Почему питон ругается на стандартные символы XML в кодировке utf-8 и как это исправить?
Отредактировано (Авг. 31, 2009 00:14:53)
Офлайн
diggiКодировка в XML указана? Вообще можно взглянуть на XML и питоновский код? Дело как всегда в руках…
Почему питон ругается на стандартные символы XML в кодировке utf-8 и как это исправить?
Офлайн
оо, у меня такая же проблема:))) я могу сюда пример кода и странички тоже запостить??:))
Офлайн
savswsoftДавай
оо, у меня такая же проблема:))) я могу сюда пример кода и странички тоже запостить??:))
Офлайн
Пример кода:
import httplib2
h = httplib2.Http(“.cache”)
h.add_credentials('name', ‘password’)
url = “someurl=” + param
responce, content = h.request(url)
html_file = content.decode(“utf-8”) # если, url указывает, например на: http://tycho.usno.navy.mil/cgi-bin/timer.pl то работает
# но рабочий вариант падает с ошибкой
print(html_file)
Ошибка:
C:\Python\31>python.exe Projects\script.py –instructions=inst.txt -t 343
Traceback (most recent call last):
File “Projects\script.py”, line 85, in <module>
print(html_file)
File “C:\Python\31\lib\encodings\cp866.py”, line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_map)
UnicodeEncodeError: ‘charmap’ codec can't encode character ‘\xef’ in position 28
777: character maps to <undefined>
пример html file дать не могу, он оченьбольшой, как по позиции выяснить номер строки и колонки?:))
Офлайн
Заголовок html:
<HTML>
<HEAD>
<TITLE>title</TITLE>
<META http-equiv=“Content-Type” content=“text/html; charset=ISO-8859-1”>
<link rel=stylesheet type=“text/css” href=“stylesheets/default.css”>
<script language=“JavaScript”>
Офлайн
savswsoftЕще вопросы?
html_file = content.decode(“utf-8”)
<META http-equiv=“Content-Type” content="text/html; charset=ISO-8859-1">
Отредактировано (Авг. 31, 2009 10:08:03)
Офлайн
да, я обратил на это внимание, но видимо что то не понимаю. charset - это кодирока?
я предположил, что это используется при конвертации из строки в bytes, т.е.
html_file = content.decode(“ISO-8859-1”)
этот вариант я также уже пробывал, результат тот же, в той же позиции:
Traceback (most recent call last):
File “Projects\script.py”, line 88, in <module>
print(html_file)
File “C:\Python\31\lib\encodings\cp866.py”, line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_map)
UnicodeEncodeError: ‘charmap’ codec can't encode characters in position 28777-28
778: character maps to <undefined>
хотя не совсем тот же, на этот раз только пизиции для символов указаны в ошибке
Офлайн
Блин! только сейчас заметил - ошибка то у вас не в той строчке, а вот тут
print(html_file)
У вас консоль в cp866, и не все символы из уникода в нее выведены могут быть. Попробуйте так:
print(html_file.encode('cp866', ‘ignore’))
Тогда все непечатаемые в консоли символы будут игнорированны
Отредактировано (Авг. 31, 2009 11:45:24)
Офлайн
Уррааааа!!!
Спасиб огромное:)))
Заработало.
Офлайн