Я очищаю какой-то веб-сайт, кодировка Unicode:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Для этого я использую urllib:
html = unicode(urllib.openurl(url).read(), 'utf-8')
Иногда некоторые символы Unicode будут заменены двумя0xFFFD символов в случайном порядке.Я предполагаю, что один символ, закодированный с 4 байтами, сломан, и заменен двумя 0xFFFD для каждой из двух 2-байтовых половин.Вероятность такой замены довольно низкая - возможно, заменен один символ из 500 000, что-то в этом роде.Кажется, что повреждены только не-ascii символы.
Я не наблюдаю ни одной из этих замен, когда одна и та же страница отображается в браузере.
Как определить, какая часть представляетпроблема?Это сервер, который отправляет поврежденные байты, или клиент, который не читает их правильно?
@ Джон Мачин:
- Версия Python - 2.7.1
- Это наблюдается во всех браузерах, а также в большинстве http-клиентов (libcurl, wget, python)
- Я действительно ошибался - иногда эти ошибки появляются в браузерах на отображаемой странице.Ошибки отображаются в виде двух символов ромба с вопросительными знаками.
- Ошибки случайные.Иногда они появляются, иногда нет.Чем больше страница, тем больше вероятность появления ошибки.
Так что я думаю, что ошибка возникает на стороне веб-сервера.Я просто попытаюсь их игнорировать.