Как я могу сказать Nokogiri не преобразовывать документ в другую кодировку, в моем случае не преобразовывать &paund;
во что-либо еще?
У меня есть файл, содержащий:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<span>£</span>
</body>
</html>
Я анализирую его с помощью Nokogiri:
d = Nokogiri::HTML.parse(open('/tmp/in.html', 'r'))
Если я печатаю документ "d
", я получаю:
<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\">\n
<html>\n
<head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\"></head>\n
<body>\n
<span>\302\243</span>\n
</body>\n
</html>\n
Примечание: £
стал "\ 302 \ 243"(или £
, который был закодирован в ISO-8859-1, стал кодироваться в UTF-8)
Если я сохраню документ" d "в файл:
open('/tmp/out.html', 'w') do |out|
out << d.to_html
end
Я получуследующее:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<body>
<span>ВЈ</span>
</body>
</html>
После анализа документа с помощью &paund;
и сохранения его в файл я получил два символа вместо BJ
.
Я думаю, что нетуказав кодировку на каком-то этапе, но я не уверен, где.