2 Stimmen

Wie kann man Nokogiri beim Parsen eines Dokuments mitteilen, dass es nicht in eine andere Kodierung konvertiert werden soll (in meinem Fall soll &paund; nicht in etwas anderes konvertiert werden)

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>&pound;</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: &pound; 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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X