nicht latin1-Zeichen retten

12/02/2008 - 08:19 von Jens Puruckherr | Report spam
Hallo,

ein Programm wird mit UTF8-Daten aus einem XML gefüttert, das Backend
kann aber nur die Zeichen des latin1-Zeichensatzes (ISO-8859-1) speichern.
Somit fliegt bei der Umwandlung der Zeichenketten ins Backendformat
einiges davon, z.B. das EUR-Zeichen.
Ich würde gerne derartige Zeichen in ihren num. Entitàt abspeichern
oder meinetwegen auch HTML-kodiert.
Nur *wann* fische ich diese aus dem Datenstrom heraus?

Nach der Umkodierung von UTF8 zu latin1 sind sie schon nicht mehr da.
Vor der Umkodierung wàren die Zeichen noch da - welche schlaue Lib kann
diese im Datenstrom erkennen?


Derzeit passiert nur das:

use Unicode::MapUTF8 qw(from_utf8);

my latin1_string = from_utf8({ -string=>$utf8_string, -charset =>
'ISO-8859-1' }) ;


Jens
 

Lesen sie die antworten

#1 Peter J. Holzer
12/02/2008 - 19:33 | Warnen spam
On 2008-02-12 07:19, Jens Puruckherr wrote:
ein Programm wird mit UTF8-Daten aus einem XML gefüttert, das Backend
kann aber nur die Zeichen des latin1-Zeichensatzes (ISO-8859-1) speichern.
Somit fliegt bei der Umwandlung der Zeichenketten ins Backendformat
einiges davon, z.B. das EUR-Zeichen.
Ich würde gerne derartige Zeichen in ihren num. Entitàt abspeichern
oder meinetwegen auch HTML-kodiert.
Nur *wann* fische ich diese aus dem Datenstrom heraus?

Nach der Umkodierung von UTF8 zu latin1 sind sie schon nicht mehr da.
Vor der Umkodierung wàren die Zeichen noch da - welche schlaue Lib kann
diese im Datenstrom erkennen?



Encode.

#!/usr/bin/perl
use warnings;
use strict;
use Encode;
use utf8;

my $s = "Fünf €uro";

my $s2 = Encode::encode('iso-8859-1', $s, Encode::FB_XMLCREF);
print "$s2";
__END__
Fünf €uro

hp

Ähnliche fragen