Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 31, 2009 00:14:34

diggi
От:
Зарегистрирован: 2009-08-31
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

utf8 и некорректные символы

Всем привет. Я не являюсь программистом питона, но есть вопрос.
Так вышло, что результаты моих программ обрабатываются в питоне. Результаты моих программ - это корректный 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)

Офлайн

#2 Авг. 31, 2009 05:33:52

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

utf8 и некорректные символы

diggi
Почему питон ругается на стандартные символы XML в кодировке utf-8 и как это исправить?
Кодировка в XML указана? Вообще можно взглянуть на XML и питоновский код? Дело как всегда в руках…



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#3 Авг. 31, 2009 08:32:11

savswsoft
От:
Зарегистрирован: 2009-08-30
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

utf8 и некорректные символы

оо, у меня такая же проблема:))) я могу сюда пример кода и странички тоже запостить??:))



Офлайн

#4 Авг. 31, 2009 09:46:06

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

utf8 и некорректные символы

savswsoft
оо, у меня такая же проблема:))) я могу сюда пример кода и странички тоже запостить??:))
Давай



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#5 Авг. 31, 2009 09:56:27

savswsoft
От:
Зарегистрирован: 2009-08-30
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

utf8 и некорректные символы

Пример кода:

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 дать не могу, он оченьбольшой, как по позиции выяснить номер строки и колонки?:))



Офлайн

#6 Авг. 31, 2009 10:02:26

savswsoft
От:
Зарегистрирован: 2009-08-30
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

utf8 и некорректные символы

Заголовок 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”>



Офлайн

#7 Авг. 31, 2009 10:07:06

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

utf8 и некорректные символы

savswsoft
html_file = content.decode(“utf-8”)
<META http-equiv=“Content-Type” content="text/html; charset=ISO-8859-1">
Еще вопросы?



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Отредактировано (Авг. 31, 2009 10:08:03)

Офлайн

#8 Авг. 31, 2009 11:24:20

savswsoft
От:
Зарегистрирован: 2009-08-30
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

utf8 и некорректные символы

да, я обратил на это внимание, но видимо что то не понимаю. 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>

хотя не совсем тот же, на этот раз только пизиции для символов указаны в ошибке



Офлайн

#9 Авг. 31, 2009 11:41:11

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

utf8 и некорректные символы

Блин! только сейчас заметил - ошибка то у вас не в той строчке, а вот тут
print(html_file)
У вас консоль в cp866, и не все символы из уникода в нее выведены могут быть. Попробуйте так:
print(html_file.encode('cp866', ‘ignore’))
Тогда все непечатаемые в консоли символы будут игнорированны



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Отредактировано (Авг. 31, 2009 11:45:24)

Офлайн

#10 Авг. 31, 2009 12:30:00

savswsoft
От:
Зарегистрирован: 2009-08-30
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

utf8 и некорректные символы

Уррааааа!!!
Спасиб огромное:)))
Заработало.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version