Wie kann ich Nokogiri anweisen, ein Dokument nicht in eine andere Kodierung zu konvertieren, in meinem Fall nicht in &paund;
zu etwas anderem?
Ich habe eine Datei, die Folgendes enthält:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<span>£</span>
</body>
</html>
Ich analysiere es mit Nokogiri:
d = Nokogiri::HTML.parse(open('/tmp/in.html', 'r'))
Wenn ich das Dokument " d
" Ich verstehe:
<!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
Nota: £
wurde " \302\243 " (oder £
die in ISO-8859-1 kodiert war, wurde in UTF-8 kodiert)
Wenn ich das Dokument "d" in einer Datei speichere:
open('/tmp/out.html', 'w') do |out|
out << d.to_html
end
Ich erhalte die folgende Meldung:
<!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>
Nach dem Parsen des Dokuments mit &paund;
und speichere es in einer Datei, erhalte ich stattdessen zwei Symbole " BJ
".
Ich glaube, ich gebe an irgendeiner Stelle keine Kodierung an, aber ich bin mir nicht sicher, wo.