Wandeln cp1250 in iso8859-15 - wie?
Wandeln cp1250 in iso8859-15 - wie?
am 13.09.2006 17:59:04 von Werner Flamme
Hallo miteinander,
ich bin ganz offensichtlich zu blöd, eine entsprechende Funktion zu finden. :-(
Die Lage: wir erhalten eine Textdatei, die zeilenweise Datensätze enthält.
Diese Datensätze sind offensichtlich mit einer Windose abgespeichert, denn
manche Sonderzeichen sind nur zu erkennen, wenn man den Viewer auf cp1250
einstellt. Die Datenbank, in der die Daten abgelegt werden (Oracle)
erwartet jedoch iso8859-15 (bzw. erwartet das jeder, der auf die Daten
zugreift). :-/
Es ist also notwendig, beim Einlesen die Sonderzeichen zu konvertieren.
Funktionen wie utf8_encode() arbeiten aber leider mit fest eingestelltem
iso8859-1 als Eingangscodierung, htmlentities() und Konsorten unterstützen
den Kwarg ebenfalls nicht. preg_replace()? Mit welchen Pattern? Oder muss
ich wirklich eine "meterlange" Funktion schreiben, die byteweise untersucht
und wandelt?
Der Webserver läuft unter Solaris 10 :-% mit Apache/2.2.2, PHP/4.4.1. :-%
http://www.php-faq.de/q/q-oracle-umlaute.html habe ich gelesen, ist aber
hier nicht relevant.
Im Voraus danke für die Unterstützung.
Werner
Re: Wandeln cp1250 in iso8859-15 - wie?
am 13.09.2006 19:26:35 von Niels Braczek
Werner Flamme schrieb:
> Es ist also notwendig, beim Einlesen die Sonderzeichen zu konvertieren.=
> Funktionen wie utf8_encode() arbeiten aber leider mit fest eingestellte=
m
> iso8859-1 als Eingangscodierung, htmlentities() und Konsorten unterstü=
tzen
> den Kwarg ebenfalls nicht. preg_replace()? Mit welchen Pattern? Oder mu=
ss
> ich wirklich eine "meterlange" Funktion schreiben, die byteweise unters=
ucht
> und wandelt?
iconv(), recode()
MfG
Niels
--=20
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------
Re: Wandeln cp1250 in iso8859-15 - wie?
am 14.09.2006 14:36:25 von Werner Flamme
Niels Braczek schrieb am 13.09.2006 19:26:
> Werner Flamme schrieb:
>
>> Es ist also notwendig, beim Einlesen die Sonderzeichen zu konvertieren.
>> Funktionen wie utf8_encode() arbeiten aber leider mit fest eingestelltem
>> iso8859-1 als Eingangscodierung, htmlentities() und Konsorten unterstützen
>> den Kwarg ebenfalls nicht. preg_replace()? Mit welchen Pattern? Oder muss
>> ich wirklich eine "meterlange" Funktion schreiben, die byteweise untersucht
>> und wandelt?
>
> iconv(), recode()
>
> MfG
> Niels
>
Hallo Niels,
Danke sehr vielmals! iconv() mit //TRANSLIT hat den Zweck erfüllt - wenn
ich jetzt noch irgendwo einen Hinweis auf die unterstützen Codepages und
deren Schreibweise gefunden hätte, wäre das eine richtig tolle Funktion ;-)
Funktion recode() wird auf der Kiste nicht unterstützt oder ist sonstwie
unfunktionierend. Solaris sage ich nur... :->
Freundlicher Gruß
Werner
Re: Wandeln cp1250 in iso8859-15 - wie?
am 14.09.2006 14:55:07 von Carsten Wiedmann
Werner Flamme schrieb:
> Danke sehr vielmals! iconv() mit //TRANSLIT hat den Zweck erfüllt - wenn
> ich jetzt noch irgendwo einen Hinweis auf die unterstützen Codepages und
> deren Schreibweise gefunden hätte, wäre das eine richtig tolle Funktion
> ;-)
Also das PHP sagt dazu:
| Supported character sets depend on the
| iconv implementation of your system.
Aus der Manpage zu iconv:
| The "iconv -l" command lists the names of the
| supported encodings, in a system dependent format.
Gruß
Carsten
Re: Wandeln cp1250 in iso8859-15 - wie?
am 14.09.2006 15:24:11 von Niels Braczek
Werner Flamme schrieb:
> Niels Braczek schrieb am 13.09.2006 19:26:
>> iconv(), recode()
>>=20
> Danke sehr vielmals! iconv() mit //TRANSLIT hat den Zweck erfüllt - w=
enn
> ich jetzt noch irgendwo einen Hinweis auf die unterstützen Codepages =
und
> deren Schreibweise gefunden hätte, wäre das eine richtig tolle Funk=
tion ;-)
Wärst du dem Link zu GNU libiconv gefolgt, hättest du dies gefunden:
http://www.gnu.org/software/libiconv/
MfG
Niels
--=20
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------
Re: Wandeln cp1250 in iso8859-15 - wie?
am 15.09.2006 12:24:55 von Werner Flamme
Carsten Wiedmann schrieb am 14.09.2006 14:55:
> Werner Flamme schrieb:
>
>> Danke sehr vielmals! iconv() mit //TRANSLIT hat den Zweck erfüllt - wenn
>> ich jetzt noch irgendwo einen Hinweis auf die unterstützen Codepages und
>> deren Schreibweise gefunden hätte, wäre das eine richtig tolle Funktion
>> ;-)
>
> Also das PHP sagt dazu:
> | Supported character sets depend on the
> | iconv implementation of your system.
>
> Aus der Manpage zu iconv:
> | The "iconv -l" command lists the names of the
> | supported encodings, in a system dependent format.
>
> Gruß
> Carsten
>
Yes sir! :-) Allerdings habe ich auf dem Webserver, auf dem es läuft,
keinen Zugang zur Befehlszeile. Und ein lokaler Aufruf bringt nicht
wirklich sinnvolle Ergebnisse...
Gruß
Werner
Re: Wandeln cp1250 in iso8859-15 - wie?
am 15.09.2006 12:31:08 von Werner Flamme
Niels Braczek schrieb am 14.09.2006 15:24:
> Werner Flamme schrieb:
>> Niels Braczek schrieb am 13.09.2006 19:26:
>
>>> iconv(), recode()
>>>
>> Danke sehr vielmals! iconv() mit //TRANSLIT hat den Zweck erfüllt - wenn
>> ich jetzt noch irgendwo einen Hinweis auf die unterstützen Codepages und
>> deren Schreibweise gefunden hätte, wäre das eine richtig tolle Funktion ;-)
>
> Wärst du dem Link zu GNU libiconv gefolgt, hättest du dies gefunden:
> http://www.gnu.org/software/libiconv/
>
> MfG
> Niels
>
Ja, in der Tat, wenn ich den Link nicht nicht überlesen hätte. :-( In der
deutschen Fassung der Seite steht ein "sichtbarer" Link, in der englischen
war er zu versteckt, als dass ich ihn vor lauter Eifer erkannt hätte.
Spannend finde ich, dass in den user contributions laufend Möglichkeiten
aufgezeigt werden, *ohne* iconv() auszukommen...
Nochmal (oder wieder) Danke!
Werner
Re: Wandeln cp1250 in iso8859-15 - wie?
am 15.09.2006 13:10:34 von Carsten Wiedmann
Werner Flamme schrieb:
> Carsten Wiedmann schrieb am 14.09.2006 14:55:
> >
> > Aus der Manpage zu iconv:
> > > The "iconv -l" command lists the names of the
> > > supported encodings, in a system dependent format.
>
> Yes sir! :-) Allerdings habe ich auf dem Webserver, auf dem es läuft,
> keinen Zugang zur Befehlszeile.
Könnte man so lösen:
|
| header('Content-Type: text/plain');
| passthru('iconv -l');
| ?>
Immer mal wieder hilfreich auch bei "locale -a". Ansonsten sollte dir der
Systemadmin ja die Info geben können, wenn er schon Iconv zur Verfügung
stellt.
> Und ein lokaler Aufruf bringt nicht wirklich sinnvolle Ergebnisse...
Wieso das nicht? Im Gegensatz zu locale gibt es ja bei iconv nicht soviel
Unterschiede zwischen den Sytemen. Die klassischen Charsets werden IMHO eh
meist in mehreren Schreibweisen unterstützt.
Gruß
Carsten
Re: Wandeln cp1250 in iso8859-15 - wie?
am 18.09.2006 10:30:37 von Werner Flamme
Carsten Wiedmann schrieb am 15.09.2006 13:10:
> Werner Flamme schrieb:
>
>> Carsten Wiedmann schrieb am 14.09.2006 14:55:
>>> Aus der Manpage zu iconv:
>>>> The "iconv -l" command lists the names of the
>>>> supported encodings, in a system dependent format.
>> Yes sir! :-) Allerdings habe ich auf dem Webserver, auf dem es läuft,
>> keinen Zugang zur Befehlszeile.
>
> Könnte man so lösen:
> |
> | header('Content-Type: text/plain');
> | passthru('iconv -l');
> | ?>
Leider wird abgebrochen mit der Meldung, dass schon Header gesendet wurden.
Hat sich aber inzwischen insoweit geklärt, dass der Admin mir die
installierte Version genannt hat - alles drin, was auf
http://www.gnu.org/software/libiconv erwähnt ist :-)
>
> Immer mal wieder hilfreich auch bei "locale -a". Ansonsten sollte dir der
> Systemadmin ja die Info geben können, wenn er schon Iconv zur Verfügung
> stellt.
>
>
>> Und ein lokaler Aufruf bringt nicht wirklich sinnvolle Ergebnisse...
>
> Wieso das nicht? Im Gegensatz zu locale gibt es ja bei iconv nicht soviel
> Unterschiede zwischen den Sytemen. Die klassischen Charsets werden IMHO eh
> meist in mehreren Schreibweisen unterstützt.
>
> Gruß
> Carsten
>
*seufz* ja, "meist". Der Webserver läuft unter Solaris, nicht unter einem
Betriebssystem :-> Es gibt "kleine Feinheiten", die auf Solaris ein
"bisschen" anders gelöst sind als auf anderen Systemen ;-), deshalb laufe
ich immer wieder vor die Wand, wenn ich Routinen, die bei mir laufen, auf
den Server übernehmen will.
Als Würgaround hatte ich inzwischen lokal eine Konvertierung durchgeführt
und unter anderem Dateinamen gespeichert. Nachteil: wenn nicht ich die
Datei hochlade, ist sie unkonvertiert...
Danke für die Hilfe!
Werner