Schrift
[thread]7346[/thread]

html nach xhtml konvertieren: xhtml mit unicode-zeichensatz ?

Leser: 1


<< >> 7 Einträge, 1 Seite
abe-want-to-know
 2005-10-13 20:07
#58756 #58756
User since
2005-10-13
3 Artikel
BenutzerIn
[default_avatar]
ich verwende das kommando-zeilen-tool tidy,
um webseiten(z.B. html) ins xhtml-format zu konvertieren

bei manchen webseiten macht tidy mucken - es werden anscheinend nur einige wenige zeichensätze unterstützt:

-raw (direkt ?) -ascii -latin1 -iso2022 -utf8 -mac -win1252

habe es so gestartet:

Code: (dl )
system('tidy -indent -asxhtml -quiet -utf8 quelle.html > target.xml');

oder
Code: (dl )
system('tidy -indent -asxml -quiet -utf8 quelle.html > target.xml');



ich bräuchte aber:
'windows1251' oder: 'unicode'

gibts da irgendeine möglichkeit
oder kann man villeicht auf andere weise eine html-seite ins xhtml-format konvertieren ???
Cremator
 2005-10-13 22:45
#58757 #58757
User since
2003-11-26
97 Artikel
BenutzerIn
[default_avatar]
Du koenntest die Datei erst konvertieren und dann tidy mit -raw drueberlaufen lassen.

Converter z.B. hier: http://www.gnu.org/software/libiconv/
abe-want-to-know
 2005-10-13 23:47
#58758 #58758
User since
2005-10-13
3 Artikel
BenutzerIn
[default_avatar]
erstmal danke für deine antwort ...

beim auslesen der seite konvertiere ich sie schon und speichere sie erfolgreich (mit sonderzeichen) in eine html datei.

Code: (dl )
1
2
$encoding = find_encoding("unicode");
$html = $encoding->decode($html);


soweit sogut ...
die probleme treten erst beim aufruf von tidy auf:
ich erzeuge dann aus dem html-file, ein xhtml(xml)-document in dem dann alle russischen(?) zeichen fehlerhaft sind.

eigentlich sollte man sich ja von tidy (w3c) etwas mehr erwarten können oder ?
Cremator
 2005-10-14 01:53
#58759 #58759
User since
2003-11-26
97 Artikel
BenutzerIn
[default_avatar]
Hast Du's mal mit raw versucht? Laut Tidy Doku:

"For raw, Tidy will output values above 127 without translating them into entities."

Wuerde ich jetzt so interpretieren, das er ganz die Finger davon laesst.

Ich hab auch noch nicht so ganz verstanden in welchem Format deine Eingangsdaten denn nun eigentlich vorliegen.
ptk
 2005-10-14 04:42
#58760 #58760
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=abe-want-to-know,13.10.2005, 18:07]ich verwende das kommando-zeilen-tool tidy,
um webseiten(z.B. html) ins xhtml-format zu konvertieren

bei manchen webseiten macht tidy mucken - es werden anscheinend nur einige wenige zeichensätze unterstützt:

-raw (direkt ?) -ascii -latin1 -iso2022 -utf8 -mac -win1252

habe es so gestartet:

Code: (dl )
system('tidy -indent -asxhtml -quiet -utf8 quelle.html > target.xml');

oder
Code: (dl )
system('tidy -indent -asxml -quiet -utf8 quelle.html > target.xml');



ich bräuchte aber:
'windows1251' oder: 'unicode'

gibts da irgendeine möglichkeit
oder kann man villeicht auf andere weise eine html-seite ins xhtml-format konvertieren ???[/quote]
Was soll denn "unicode" für ein Encoding sein? So etwas gibt es nicht. Nur utf8, ucs4 etc.

Und: was kann windows1251 was utf8 nicht kann?\n\n

<!--EDIT|ptk|1129250582-->
abe-want-to-know
 2005-10-14 10:35
#58761 #58761
User since
2005-10-13
3 Artikel
BenutzerIn
[default_avatar]
ich habe einfach ein paar parameter ausprobiert ...

mit
$encoding = find_encoding("utf-8");
erhalte ich folgende meldung beim schreiben der datei:
Wide character in print at ...blabla
(also kennt er da irgendwelche zeichen nicht)

mit
$encoding = find_encoding("unicode");
wird zumindest das temporäre html-file erfolgreich erstellt.

mit
$encoding = find_encoding("ucs4");
kommt dann dieser fehler:
UTF-32:Unrecognised BOM 3c68746d at ... blabla
(also kann so nicht gefunden werden ...)


Und: was kann windows1251 was utf8 nicht kann? :::
windows1251 ist der kyrilische zeichensatz (sieht russisch aus)


soweit klappt ja alles wunderbar...
erst beim übergeben des html-files an tidy (zwecks xhtml-konvertierung) werden die (win1251) zeichen falsch übersetzt
ptk
 2005-10-15 02:41
#58762 #58762
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
utf-8 kann *alles*. Auch kyrillisch.

Wenn du den "Wide character"-Fehler hast, dann liegt das daran, dass du deinem Programm sagen musst, in welchem Encoding du etwas ausgeben haben willst. Aus Rückwärtskompatibilitätsgründen nimmt es an, dass man auf ein ISO-8859-1-Terminal/Datei schreiben will. Ist es etwas anderes, muss man es perl mitteilen. Vergleiche:
Code: (dl )
1
2
3
4
use charnames qw(:full);
$x = "\N{CYRILLIC CAPITAL LETTER BE}";
# binmode STDOUT, ":encoding(utf-8)";
print $x, "\n";

mit binmode erst einmal auskommentiert und dann nochmal aktiviert.
<< >> 7 Einträge, 1 Seite



View all threads created 2005-10-13 20:07.