uc() nicht auf Umlaute?

15/11/2009 - 01:59 von Ulli Horlacher | Report spam
Ich dachte eigentlich bisher, dass die Funktionen uc() und lc() bei
korrekt gesetztem locale auch auf Umlaute wirken?

framstag@fex: echo "xÖöàÄz" | perl -ne 'print uc'
XÖöàÄZ

framstag@fex: perl -e 'print uc("xÖöàÄz")'
XÖöàÄZ

framstag@fex: locale
LANG=en_US.ISO8859-1
LC_CTYPE="en_US.ISO8859-1"
LC_NUMERIC="en_US.ISO8859-1"
LC_TIME="en_US.ISO8859-1"
LC_COLLATE="en_US.ISO8859-1"
LC_MONETARY="en_US.ISO8859-1"
LC_MESSAGES="en_US.ISO8859-1"
LC_PAPER="en_US.ISO8859-1"
LC_NAME="en_US.ISO8859-1"
LC_ADDRESS="en_US.ISO8859-1"
LC_TELEPHONE="en_US.ISO8859-1"
LC_MEASUREMENT="en_US.ISO8859-1"
LC_IDENTIFICATION="en_US.ISO8859-1"
LC_ALL
Ausserdem matcht \w ebenfalls nicht auf Umlaute, sondern nur auf ASCII.
Gibts was besseres als [\wŒ-ÿ] um alphanumerische Latin1 Zeichen zu
matchen?


Ullrich Horlacher Informationssysteme und Serverbetrieb
Rechenzentrum E-Mail: horlacher@rus.uni-stuttgart.de
Universitaet Stuttgart Tel: ++49-711-685-65868
Allmandring 30 Fax: ++49-711-682357
70550 Stuttgart (Germany) WWW: http://www.rus.uni-stuttgart.de/
 

Lesen sie die antworten

#1 Tim Landscheidt
15/11/2009 - 02:11 | Warnen spam
Ulli Horlacher wrote:

Ich dachte eigentlich bisher, dass die Funktionen uc() und lc() bei
korrekt gesetztem locale auch auf Umlaute wirken?

: echo "xÖöàÄz" | perl -ne 'print uc'
XÖöàÄZ
[...]



Du musst die Ein-/Ausgaben als UTF-8 deklarieren:

| [ ~]$ echo "xÖöàÄz" | perl -CS -ne 'print uc'
| XÖÖÄÄZ
| [ ~]$

Tim

Ähnliche fragen