UTF-8 in Grundbuchstaben umsetzen

Hallo,

um eine Auszug aus einer bibliographischen Datenbank in UTF-8 lexikalisch
richtig zu sortieren erstelle ich eine Sortierdatei, in der
sortierrelevante Teile des Satzes einen sog. Sortierkopf bilden. In
diesem Teil des Datensatzes sollen alle UTF-8-Zeichen auf den
Grundbuchstaben bzw. die Grundbuchstabenkombination (ö->oe) reduziert
werden. So kann die Datei anschließend über ein UNIX-sort sortiert werden.

Meine Frage: Gibt es in perl dazu eine vorgefertigte Funktion ähnlich dem
decode?



Christoph
Christoph Krempe [ Do, 10 Januar 2008 09:55 ] [ ID #1904917 ]

Re: UTF-8 in Grundbuchstaben umsetzen

Christoph Krempe wrote:
>
> um eine Auszug aus einer bibliographischen Datenbank in UTF-8 lexikalisch
> richtig zu sortieren erstelle ich eine Sortierdatei, in der
> sortierrelevante Teile des Satzes einen sog. Sortierkopf bilden. In
> diesem Teil des Datensatzes sollen alle UTF-8-Zeichen auf den
> Grundbuchstaben bzw. die Grundbuchstabenkombination (ö->oe) reduziert
> werden. So kann die Datei anschließend über ein UNIX-sort sortiert werden.
>
> Meine Frage: Gibt es in perl dazu eine vorgefertigte Funktion ähnlich dem
> decode?

$str =~ s/ä/oe/g;
$str =~ s/ö/oe/g;
....

Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel
Frank Seitz [ Do, 10 Januar 2008 10:14 ] [ ID #1904919 ]

Re: UTF-8 in Grundbuchstaben umsetzen

Am Thu, 10 Jan 2008 10:14:31 +0100 schrieb Frank Seitz:

> Christoph Krempe wrote:
>>
>> um eine Auszug aus einer bibliographischen Datenbank in UTF-8
>> lexikalisch richtig zu sortieren erstelle ich eine Sortierdatei, in der
>> sortierrelevante Teile des Satzes einen sog. Sortierkopf bilden. In
>> diesem Teil des Datensatzes sollen alle UTF-8-Zeichen auf den
>> Grundbuchstaben bzw. die Grundbuchstabenkombination (ö->oe) reduziert
>> werden. So kann die Datei anschließend über ein UNIX-sort sortiert
>> werden.
>>
>> Meine Frage: Gibt es in perl dazu eine vorgefertigte Funktion ähnlich
>> dem decode?
>
> $str =~ s/ä/oe/g;
> $str =~ s/ö/oe/g;
> ...
>
> Grüße
> Frank

Das ist mir klar. Nur wollte ich keine eigene Umkodierungstabelle für
sämtliche UTF-8-Zeichen schreiben ...

Christoph
Christoph Krempe [ Do, 10 Januar 2008 11:07 ] [ ID #1904927 ]

Re: UTF-8 in Grundbuchstaben umsetzen

Hallo,

Christoph Krempe wrote:
> Am Thu, 10 Jan 2008 10:14:31 +0100 schrieb Frank Seitz:
>
>> Christoph Krempe wrote:
>>>
>>> um eine Auszug aus einer bibliographischen Datenbank in UTF-8
>>> lexikalisch richtig zu sortieren erstelle ich eine Sortierdatei, in d=
er
>>> sortierrelevante Teile des Satzes einen sog. Sortierkopf bilden. In
>>> diesem Teil des Datensatzes sollen alle UTF-8-Zeichen auf den
>>> Grundbuchstaben bzw. die Grundbuchstabenkombination (=C3=B6->oe) redu=
ziert
>>> werden. So kann die Datei anschlie=C3=9Fend =C3=BCber ein UNIX-sort s=
ortiert
>>> werden.
>>>
>>> Meine Frage: Gibt es in perl dazu eine vorgefertigte Funktion =C3=A4h=
nlich
>>> dem decode?
>>
>> $str =3D~ s/=C3=A4/oe/g;
>> $str =3D~ s/=C3=B6/oe/g;
>> ...
>>
>> Gr=C3=BC=C3=9Fe
>> Frank
>
> Das ist mir klar. Nur wollte ich keine eigene Umkodierungstabelle f=C3=BC=
r
> s=C3=A4mtliche UTF-8-Zeichen schreiben ...

Du k=C3=B6nntest probieren, mit charnames::viacode den Unicode-Namen zu
bekommen und den mit regexes zu zerlegen. Im Deutschen werden z.B. die
DIARESIS zu einem nachgestellten e. Das ist immer noch ganz sch=C3=B6n vi=
el
Arbeit, aber du kommst zumindest an ASCII-Repr=C3=A4sentationen aller
m=C3=B6glicher Zeichen aus dem asiatischen Raum, die du vermutlich gar ni=
cht
kennst.

Die Frage ist aber, wie weit du mit deinem Ansatz kommst, vielleicht
solltest du dir lieber locale-abh=C3=A4ngige Collates oder Unicode::Colla=
te
anschauen.

Gr=C3=BC=C3=9Fe,
Moritz

--
Moritz Lenz
http://perl-6.de/ http://moritz.faui2k3.org/
Moritz Lenz [ Do, 10 Januar 2008 11:25 ] [ ID #1904931 ]

Re: UTF-8 in Grundbuchstaben umsetzen

Christoph Krempe wrote:

> Meine Frage: Gibt es in perl dazu eine vorgefertigte Funktion ähnlich dem
> decode?

Text::Undiacritic

Wenn Du die deutschen Umlaute umschreiben willst (ö -> oe), musst Du
vorher eine REGEX drüberlassen.

Wie hier im Thread schon erwähnt, halte ich in Deinem Fall
Unicode::Collate für die richtige Lösung.

Helmut Wollmersdorfer
Helmut Wollmersdorfer [ So, 13 Januar 2008 23:43 ] [ ID #1906894 ]

Re: UTF-8 in Grundbuchstaben umsetzen

Helmut Wollmersdorfer <helmut [at] wollmersdorfer.at> writes:

> Christoph Krempe wrote:
>
> > Meine Frage: Gibt es in perl dazu eine vorgefertigte Funktion
> > ähnlich dem decode?
>
> Text::Undiacritic

Alternativ: Text::Unidecode (persönlich schon benutzt),
Text::Unaccent, Text::StripAccents.

Gruß,
Slaven

--
Slaven Rezic - slaven <at> rezic <dot> de

Start a WWW browser - OS independent:
http://user.cs.tu-berlin.de/~eserte/src/perl/WWWBrowser/
Slaven Rezic [ Mo, 14 Januar 2008 10:08 ] [ ID #1907790 ]
Perl » de.comp.lang.perl.misc » UTF-8 in Grundbuchstaben umsetzen

Vorheriges Thema: Database handle problem
Nächstes Thema: encoding, cp850