У меня есть сценарий Python, который загружает веб-страницу с помощью urllib2.urlopen
, творит различные волшебства и выплевывает результаты с использованием print
. Затем мы запускаем программу в Windows следующим образом:
python program.py > output.htm
Вот проблема:
urlopen
считывает данные с веб-сервера IIS, который выводит UTF8. Он выводит те же данные на вывод, однако некоторые символы (например, длинный дефис, который Word всегда вставляет за вас против вашей воли, потому что он умнее вас) искажаются и вместо этого заканчиваются как -
.
При дальнейшем исследовании я заметил, что даже несмотря на то, что веб-сервер выдает данные UTF8, файл output.htm
закодирован с помощью набора символов ISO-8859-1.
Мои вопросы:
output.htm
в качестве параметра командной строки и записать в этот файл вместо экрана, но мне пришлось бы переделать целую кучу логики в моей программе. Спасибо за любую помощь!
ОБНОВЛЕНИЕ:
Вверху output.htm
я добавил:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
Однако это не имеет значения. Персонажи все еще искажены. Если я вручную переключусь на UTF-8 в Firefox, файл отобразится правильно. И IE, и FF считают, что этот файл является западным ISO, хотя это явно не так.