Suche: encode_html auf Steroiden

Suche: encode_html auf Steroiden

am 08.07.2006 18:35:05 von unknown

Post removed (X-No-Archive: yes)

Re: Suche: encode_html auf Steroiden

am 09.07.2006 14:49:42 von Slaven Rezic

Christoph Biedl writes:

> Hallo,
>
> ich bin auf der Suche nach einer Funktion, die einen Text in html wandelt.
> Was sie von einem normalen encode_html unterscheidet, ist der Umgang mit
> 8bit-Zeichen.
>
> Die Behandlung sollte wie folgt sein:
> - Untersuche, ob die 8bit-Zeichen eine gültige utf-8-Sequenz darstellen,
> dann nimm utf-8 an (Ja, das funktioniert nicht 100%ig), konvertiere
> die 8bit-Abschnitte in benannte (numerisch reicht) Zeichen.
> - Ansonsten nimm einen 8bit-Zeichensatz an, der mit als Parameter
> übergeben wird (z.B. "iso-8859-2") und die 8bit-Zeichen werden in
> entsprechende benannte Zeichen konvertiert.
>
> Nichts, was man nicht mit einigen Handgriffen selber bauen könnte -
> aber eigentlich sollte es so etwas schon geben.

Eigentlich nicht --- wie du schon richtig, muss man hier "raten", und
das ist nichts, was ich in einer "offiziellen" Funktion haben möchte.
Warum weisst du eigentlich nicht, in welchem Encoding die Daten
vorliegen? Vielleicht kann man bereits hier ansetzen?

>
> Zur Sicherheit noch einmal der Hinweis, daß der Konverter auch in
> Umgebungen funktionieren soll, die nicht Latin1 oder leichte Abwandlungen
> davon heißen.
>

Man kann so ziemlich alles mit Encode machen, also das Prüfen, ob eine
Octetsequenz eine gültige utf-8-Sequenz ist, sowie das Umwandeln in
beliebige andere Encodings. Zum Beispiel so:

#!/usr/bin/perl -w
use Encode;
use HTML::Entities;
use strict;

# Annahme: $input sind "Octets"
# $encoding ist das "Ersatz-Encoding"

my $input = "äöü<>&!+ "; # latin-1 oder latin-2
#$input = encode("utf-8", $input); # damit könnte man utf-8 erzeugen
my $encoding = "iso-8859-2";

# my $check=$input ist notwendig, weil Encode manchmal die
# Eingabeparameter zerstört
eval { decode("utf-8", my $check=$input, Encode::FB_CROAK) };
if (!$@) {
$encoding = "utf-8";
}
my $string = decode($encoding, $input);
my $html = HTML::Entities::encode_entities_numeric($string);
warn $html;

__END__

Gruß,
Slaven

PS: jetzt habe ich schon so viel geschrieben und dann fällt mir ein,
dass es tatsächlich Encode::Guess gibt, und das sogar als
Core-Modul...

--
Slaven Rezic - slaven rezic de

Start a WWW browser - OS independent:
http://user.cs.tu-berlin.de/~eserte/src/perl/WWWBrowser/

Re: Suche: encode_html auf Steroiden

am 13.07.2006 21:59:28 von unknown

Post removed (X-No-Archive: yes)