Schrift
[thread]447[/thread]

Sonderzeichen ersetzen



<< >> 5 Einträge, 1 Seite
Dareios
 2005-02-27 18:22
#4520 #4520
User since
2004-08-06
8 Artikel
BenutzerIn
[default_avatar]
Ich benutze eine Textdatei als Datenbank. Im Text kommen einige Sonderzeichen (s mit Hacek etc.) vor, die nach der Ausgabe falsch angezeigt werden. Da ich die Schriftart nicht weitergeben kann und diese auch nicht auf jeden Rechner installiert ist, würde ich gerne wissen, ob man während der Ausgabe solche Sonderzeichen ersetzen kann (zb s mit Hacek durch "sch" etc.).

Vielen Dank schon im voraus. Ich stelle mir vor, dass es so ähnlich wie mit einer Suche läuft, dass nach solchen Sonderzeichen im Text gesucht wird und diese dann anders ausgegeben werden. Aber ich steh noch weit entfernt von der Praxis.

Dareios
renee
 2005-02-27 22:09
#4521 #4521
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
man könnte es so machen:
Code: (dl )
1
2
3
4
5
my %ersetzungen = (s => 'sch', ö => 'oe',...);

for my $key(keys(%ersetzungen)){
$text =~ s/$key/$ersetzungen{$key}/g;
}
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Dubu
 2005-02-28 00:18
#4522 #4522
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Ist das so eine spezielle Schriftart, dass sie mit ihrer eigenen Kodierung herkommt, oder kommen die Zeichen nicht doch aus ISO-8859-1 o.ae.? ¦ und ¨ findet man dort jedenfalls.
Und ISO-8859-1 kann eigentlich jeder aktuelle Rechner; sogar Windows benutzt ja eine fast diesem Standard entsprechende Kodierung (cp1252, IIRC).

Zumindest in Unicode sollte sich aber jedes Zeichen gebraeuchlicher menschlicher Sprachen darstellen lassen, und neuere Betriebssysteme haben auch Unicode-faehige Fonts. Das kann man allerdings noch nicht bei jedem Anwender erwarten.\n\n

<!--EDIT|Dubu|1109542783-->
ptk
 2005-02-28 13:04
#4523 #4523
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=Dubu,27.02.2005, 23:18]Ist das so eine spezielle Schriftart, dass sie mit ihrer eigenen Kodierung herkommt, oder kommen die Zeichen nicht doch aus ISO-8859-1 o.ae.? ¦ und ¨ findet man dort jedenfalls.
Und ISO-8859-1 kann eigentlich jeder aktuelle Rechner; sogar Windows benutzt ja eine fast diesem Standard entsprechende Kodierung (cp1252, IIRC).

Zumindest in Unicode sollte sich aber jedes Zeichen gebraeuchlicher menschlicher Sprachen darstellen lassen, und neuere Betriebssysteme haben auch Unicode-faehige Fonts. Das kann man allerdings noch nicht bei jedem Anwender erwarten.[/quote]
Nein, S caron ist *nicht* in ISO-8859-1 enthalten, sondern nur in der Microsoft-Erweiterung (cp1252 oder cp1250, nicht sicher). Bei ISO-8859-1 sind zwischen 128 und 160 keine Zeichen definiert.

Zum Problem: es gibt auf CPAN das Modul Text::Unidecode, mit dem man von Unicode nach ASCII umwandeln kann, notfalls mit einer Ersatzdarstellung. Interessant koennte auch diese Erweiterung fuer Text::Unidecode sein: https://rt.cpan.org/NoAuth/Bug.html?id=8017
Dubu
 2005-02-28 19:00
#4524 #4524
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=ptk,28.02.2005, 12:04]Nein, S caron ist *nicht* in ISO-8859-1 enthalten, sondern nur in der Microsoft-Erweiterung (cp1252 oder cp1250, nicht sicher). Bei ISO-8859-1 sind zwischen 128 und 160 keine Zeichen definiert.[/quote]
Ups, stimmt, in ISO-8859-1 sind sie nicht drin, aber in ISO-8859-15.
Zu den Microsoft-Zeichensaetzen kann ich momentan nix sagen, mangels passendem Rechner. (cp1252 ist aber Western Europe, cp1250 Eastern Europe; in letzterem ist es also bestimmt drin, in ersterem moeglicherweise.)

Das kommt davon, wenn man sich man latin1 auf einem Terminal anschaut, das auf Latin-9 (also ISO-8859-15) eingestellt ist. ;)

Zur Uebersicht hier noch ein Ausschnitt aus der ISO-8859-15 Tabelle mit den Unterschieden zu ISO-8859-1. Das Forum hier deklariert im HTML-Header den Zeichensatz als ISO-8859-15, deshalb sollten die dargestellten Zeichen in jedem Browser mit ihrer Beschreibung dahinter uebereinstimmen. Welches Zeichen in ISO-8859-1 an der entsprechenden Codeposition zu finden ist, steht jeweils in Klammern dahinter.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Oct   Dec   Hex   Char   Description
------------------------------------------------------------------
244   164   A4     ¤     EURO SIGN (Latin-1: CURRENCY SIGN)
...
246   166   A6     ¦     LATIN CAPITAL LETTER S WITH CARON (Latin-1: BROKEN BAR)
...
250   168   A8     ¨     LATIN SMALL LETTER S WITH CARON (Latin-1: DIAERESIS)
...
264   180   B4     ´     LATIN CAPITAL LETTER Z WITH CARON (Latin-1: ACUTE ACCENT)
...
270   184   B8     ¸     LATIN SMALL LETTER Z WITH CARON (Latin-1: CEDILLA)
...
274   188   BC     ¼     LATIN CAPITAL LIGATURE OE (Latin-1: VULGAR FRACTION ONE QUARTER)
275   189   BD     ½     LATIN SMALL LIGATURE OE (Latin-1: VULGAR FRACTION ONE HALF)
276   190   BE     ¾     LATIN CAPITAL LETTER Y WITH DIAERESIS (Latin-1: VULGAR FRACTION THREE QUARTERS)

Der Unterschied zwischen ISO-8859-1 und -15 ist eben mehr als nur das Eurozeichen ...
<< >> 5 Einträge, 1 Seite



View all threads created 2005-02-27 18:22.