Mailinglist Archive: opensuse-de (1185 mails)
| < Previous | Next > |
Re: Iconv - locale - Verständnisproblem
- From: Al Bogner <suse-linux@xxxxxxxxxxxxxxxxxxxx>
- Date: Thu, 16 Sep 2010 20:36:39 +0200
- Message-id: <20100916203639.7063fe6a@xxxxxxxxxxxxxxxxxxxx>
Am Do, 16 Sep 2010 19:46:04 CEST schrieb Christian Brabandt:
Hi Christian,
ja (Standard OS 11.2)
ja, war aber nur ein simples Beispiel. Die Dateien verwenden auch span.
Sonderzeichen, etc.
Damit tr in Großbuchstaben wandeln kann.
Ich werde mir deinen Vorschlag anschauen, ob der überall passt.
wusste ich nicht.
Ich bin da so gewohnt, wenn ich griechische Zeichen nach groß wandle.
ITLE=`printf "„Χρώματα“" | sed -e "s/_/ /g;s/'/ /g;s/
\+/ /g;s/.*/\U&/"`
printf "$TITLE\n"
„ΧΡΏΜΑΤΑ“
Cool, endlich dieses Gewürgs beim Wandeln in Großbuchstaben von UTF-8
weg. Vielen Dank! Als ich vor langer Zeit mein 1. Script mit dieser
Problemtik erstellte, ergaben meine Recherchen keine bessere Lösung als
mit iconv.
Stimmt, die habe ich ja zum Dateinamen hinzugefügt.
Al
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+unsubscribe@xxxxxxxxxxxx
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+help@xxxxxxxxxxxx
Hi Christian,
On Do, 16 Sep 2010, Al Bogner wrote:
Ich verstehe nicht, warum folgendes (wie sonst schon) nicht
funktioniert:
ls -1
äffchen.jpg
Was ist die Ausgangslocale? UTF-8?
ja (Standard OS 11.2)
Ziel ist eine Variable zu erhalten in der sich "ÄFFCHEN" befindet.
TITLE="„"`basename "$FILE" .jpg | \
sed -e "s/_/ /g" -e "s/'/ /g" -e "s/ / /g"`"“"
In $FILE steht äffchen.jpg?
ja, war aber nur ein simples Beispiel. Die Dateien verwenden auch span.
Sonderzeichen, etc.
Das geht auch einfacher:
#v+
chrisbra@r500vm:/tmp$ TITLE=`printf "„äffchen“" | sed -e
"s/_/ /g;s/'/ /g;s/ \+/ /g;s/.*/\U&/"` chrisbra@r500vm:/tmp$ printf
"$TITLE\n" „ÄFFCHEN“
#v-
(geht nur mit GNU sed).
# um Sonderzeichen in Großbuchstaben zu wandeln
export LC_CTYPE=de_DE.iso88591
export LANG=de_DE.ISO-8859-1
Wozu? Du sagst hier, dass die shell allen Input als latin1 ansehen
soll.
Damit tr in Großbuchstaben wandeln kann.
Ich werde mir deinen Vorschlag anschauen, ob der überall passt.
IMAGETITLE=" "`echo "$TITLE" | iconv -f UTF-8 -t ISO_8859-1 |
tr '[:lower:]' '[:upper:]' | iconv -f ISO_8859-1 -t UTF-8`" "
Und hier verlangst Du, dass iconv vom UTF-8 nach latin1 wandelt.
Dabei sieht die Shell bei $TITLE schon alles als latin1 Bitstrom an.
Außerdem siehe oben, GNU sed kann selber wandeln.
wusste ich nicht.
# es sollte von UTF8 nach 8859-1 gewandelt werden,
#danach in Großbuchstaben und wieder zurück zu UTF8
Warum erst von einer Kodierung in die andere wandeln?
Ich bin da so gewohnt, wenn ich griechische Zeichen nach groß wandle.
ITLE=`printf "„Χρώματα“" | sed -e "s/_/ /g;s/'/ /g;s/
\+/ /g;s/.*/\U&/"`
printf "$TITLE\n"
„ΧΡΏΜΑΤΑ“
Cool, endlich dieses Gewürgs beim Wandeln in Großbuchstaben von UTF-8
weg. Vielen Dank! Als ich vor langer Zeit mein 1. Script mit dieser
Problemtik erstellte, ergaben meine Recherchen keine bessere Lösung als
mit iconv.
# Das Script soll weiter in UTF8 laufen
export LC_CTYPE=de_DE.UTF-8
export LANG=de_DE.UTF-8
iconv: ung�ltige Eingabe-Sequenz an der Stelle 0
Ja, weil „ und “ keine gültigen Kodierungen in latin1 sind. Davon ab,
kann man iconv auch sagen, dass es ungültige Bytes übersetzen soll:
#v+
chrisbra@host:/tmp$ a="„"
chrisbra@host:/tmp$ printf "$a\n"
„
chrisbra@host:/tmp$ export LANG=de_DE.iso8859-1//TRANSLIT
chrisbra@host:/tmp$ printf "$a\n" |iconv -f UTF-8 -t
iso8859-1//TRANSLIT ,,
chrisbra@host:/tmp$ printf "$a\n" |iconv -f UTF-8 -t iso8859-1
iconv: illegal input sequence at position 0
#v-
Mache ich hingegen in einer neu geöffneten Shell direkt folgendes,
dann passt es:
TITLE="österreich"
export LC_CTYPE=de_DE.iso88591
export LANG=de_DE.ISO-8859-1
echo "$TITLE" | iconv -f UTF-8 -t ISO_8859-1 \
| tr '[:lower:]' '[:upper:]' | iconv -f ISO_8859-1 -t UTF-8
ÖSTERREICH
Klar, deine Anführungszeichen fehlen ;)
Stimmt, die habe ich ja zum Dateinamen hinzugefügt.
Al
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+unsubscribe@xxxxxxxxxxxx
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+help@xxxxxxxxxxxx
| < Previous | Next > |