UTF-8 in Grundbuchstaben umsetzen

UTF-8 in Grundbuchstaben umsetzen

am 10.01.2008 09:55:03 von Christoph Krempe

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

Re: UTF-8 in Grundbuchstaben umsetzen

am 10.01.2008 10:14:31 von 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
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel

Re: UTF-8 in Grundbuchstaben umsetzen

am 10.01.2008 11:07:10 von Christoph Krempe

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

Re: UTF-8 in Grundbuchstaben umsetzen

am 10.01.2008 11:25:13 von Moritz Lenz

Hallo,

Christoph Krempe wrote:
> Am Thu, 10 Jan 2008 10:14:31 +0100 schrieb Frank Seitz:
>=20
>> Christoph Krempe wrote:
>>>=20
>>> 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 (ö->oe) redu=
ziert
>>> werden. So kann die Datei anschließend über ein UNIX-sort s=
ortiert
>>> werden.
>>>=20
>>> Meine Frage: Gibt es in perl dazu eine vorgefertigte Funktion äh=
nlich
>>> dem decode?
>>=20
>> $str =3D~ s/ä/oe/g;
>> $str =3D~ s/ö/oe/g;
>> ...
>>=20
>> Grüße
>> Frank
>=20
> Das ist mir klar. Nur wollte ich keine eigene Umkodierungstabelle fü=
r=20
> sämtliche UTF-8-Zeichen schreiben ...

Du könntest 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ön vi=
el
Arbeit, aber du kommst zumindest an ASCII-Repräsentationen aller
möglicher 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ängige Collates oder Unicode::Colla=
te
anschauen.

Grüße,
Moritz

--=20
Moritz Lenz
http://perl-6.de/ http://moritz.faui2k3.org/

Re: UTF-8 in Grundbuchstaben umsetzen

am 13.01.2008 23:43:33 von Helmut Wollmersdorfer

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

Re: UTF-8 in Grundbuchstaben umsetzen

am 14.01.2008 10:08:16 von Slaven Rezic

Helmut Wollmersdorfer 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 rezic de

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