Найти - Пользователи
Полная версия: utf8 и некорректные символы
Начало » Python для новичков » utf8 и некорректные символы
1 2
diggi
Всем привет. Я не являюсь программистом питона, но есть вопрос.
Так вышло, что результаты моих программ обрабатываются в питоне. Результаты моих программ - это корректный XML (точнее RSS feed) в кодировке utf-8. Так вот, питон ругается на некорректные символы в моем XML'е (например, символ 0xab - левая кавычка-ёлочка).
Разбираясь в проблеме, я нахожу документ (http://www.w3.org/TR/2000/REC-xml-20001006#NT-Char), в котором специфицируются стандартные для XML символы. Судя по этому документу, символ 0xab входит в число корректных.

Почему питон ругается на стандартные символы XML в кодировке utf-8 и как это исправить?
PooH
diggi
Почему питон ругается на стандартные символы XML в кодировке utf-8 и как это исправить?
Кодировка в XML указана? Вообще можно взглянуть на XML и питоновский код? Дело как всегда в руках…
savswsoft
оо, у меня такая же проблема:))) я могу сюда пример кода и странички тоже запостить??:))
PooH
savswsoft
оо, у меня такая же проблема:))) я могу сюда пример кода и странички тоже запостить??:))
Давай
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 дать не могу, он оченьбольшой, как по позиции выяснить номер строки и колонки?:))
savswsoft
Заголовок 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”>
PooH
savswsoft
html_file = content.decode(“utf-8”)
<META http-equiv=“Content-Type” content="text/html; charset=ISO-8859-1">
Еще вопросы?
savswsoft
да, я обратил на это внимание, но видимо что то не понимаю. 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>

хотя не совсем тот же, на этот раз только пизиции для символов указаны в ошибке
PooH
Блин! только сейчас заметил - ошибка то у вас не в той строчке, а вот тут
print(html_file)
У вас консоль в cp866, и не все символы из уникода в нее выведены могут быть. Попробуйте так:
print(html_file.encode('cp866', ‘ignore’))
Тогда все непечатаемые в консоли символы будут игнорированны
savswsoft
Уррааааа!!!
Спасиб огромное:)))
Заработало.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB