PHP und dBase mit falschen Umlauten
PHP und dBase mit falschen Umlauten
am 11.02.2005 22:59:10 von Goldfisch1980
Ich habe eine dBase Datenbank, die ich über PHP auslese und dann in eine
mySQL Tabelle eintragen möchte.
Allerdings gehen mir bereits beim Auslesen die Umlaute und Sonderzeichen
verloren!
Was muss ich tun, dass diese erhalten bleiben?
Für einen guten Tip wäre ich sehr dankbar!!
Lars
Re: PHP und dBase mit falschen Umlauten
am 12.02.2005 00:20:10 von Hartmut Holzgraefe
Goldfisch1980 wrote:
> Ich habe eine dBase Datenbank, die ich über PHP auslese und dann in e=
ine=20
> mySQL Tabelle eintragen möchte.
> Allerdings gehen mir bereits beim Auslesen die Umlaute und Sonderzeiche=
n=20
> verloren!
> Was muss ich tun, dass diese erhalten bleiben?
Vermutung: in der dBase Tabelle wird noch der DOS-Zeichensatz verwendet,
PHP und MySQL verwenden aber normalerweise den europäischen Latin-1
Zeichensatz, auch bekannt als ISO-8859-1.
http://de.php.net/recode oder http://de.php.net/iconf helfen da
--=20
Hartmut Holzgraefe, Senior Support Engineer .
MySQL AB, www.mysql.com
Are you MySQL certified? www.mysql.com/certification
Re: PHP und dBase mit falschen Umlauten
am 12.02.2005 14:12:01 von Goldfisch1980
Hartmut Holzgraefe schrieb:
> Goldfisch1980 wrote:
>
>> Ich habe eine dBase Datenbank, die ich über PHP auslese und dann in
>> eine mySQL Tabelle eintragen möchte.
>> Allerdings gehen mir bereits beim Auslesen die Umlaute und
>> Sonderzeichen verloren!
>> Was muss ich tun, dass diese erhalten bleiben?
>
>
> Vermutung: in der dBase Tabelle wird noch der DOS-Zeichensatz verwendet,
> PHP und MySQL verwenden aber normalerweise den europäischen Latin-1
> Zeichensatz, auch bekannt als ISO-8859-1.
>
> http://de.php.net/recode oder http://de.php.net/iconf helfen da
>
Das vermute ich fast auch, was kann ich denn dagegen tun, dass es in
mySQL und PHP passt. Ich kann die dBase Datei nicht mehr ändern.
Re: PHP und dBase mit falschen Umlauten
am 12.02.2005 16:54:51 von Joerg Behrens
Goldfisch1980 wrote:
> Hartmut Holzgraefe schrieb:
>
>> Goldfisch1980 wrote:
>>
>>> Ich habe eine dBase Datenbank, die ich über PHP auslese und dann in
>>> eine mySQL Tabelle eintragen möchte.
>>> Allerdings gehen mir bereits beim Auslesen die Umlaute und
>>> Sonderzeichen verloren!
>>> Was muss ich tun, dass diese erhalten bleiben?
>>
>>
>>
>> Vermutung: in der dBase Tabelle wird noch der DOS-Zeichensatz verwendet,
>> PHP und MySQL verwenden aber normalerweise den europäischen Latin-1
>> Zeichensatz, auch bekannt als ISO-8859-1.
>>
>> http://de.php.net/recode oder http://de.php.net/iconf helfen da
>>
>
>
> Das vermute ich fast auch, was kann ich denn dagegen tun, dass es in
> mySQL und PHP passt. Ich kann die dBase Datei nicht mehr ändern.
In dem nach dem Auslesen der Zeichensatz des Strings konvertiert wird
nach ISO-8859-1 z.b. Dazu stellt PHP 2 verschiedene Extensions bereit
wobei die 2. nicht iconf sondern iconv heist.
Erst dann wird er in die DB geschrieben. Das alles sagte aber Hartmut
auch schon.
Gruss
Joerg
Re: PHP und dBase mit falschen Umlauten
am 12.02.2005 18:48:08 von Goldfisch1980
Joerg Behrens schrieb:
> Goldfisch1980 wrote:
>
>> Hartmut Holzgraefe schrieb:
>>
>>> Goldfisch1980 wrote:
>>>
>>>> Ich habe eine dBase Datenbank, die ich über PHP auslese und dann in
>>>> eine mySQL Tabelle eintragen möchte.
>>>> Allerdings gehen mir bereits beim Auslesen die Umlaute und
>>>> Sonderzeichen verloren!
>>>> Was muss ich tun, dass diese erhalten bleiben?
>>>
>>>
>>>
>>>
>>> Vermutung: in der dBase Tabelle wird noch der DOS-Zeichensatz verwendet,
>>> PHP und MySQL verwenden aber normalerweise den europäischen Latin-1
>>> Zeichensatz, auch bekannt als ISO-8859-1.
>>>
>>> http://de.php.net/recode oder http://de.php.net/iconf helfen da
>>>
>>
>>
>> Das vermute ich fast auch, was kann ich denn dagegen tun, dass es in
>> mySQL und PHP passt. Ich kann die dBase Datei nicht mehr ändern.
>
>
> In dem nach dem Auslesen der Zeichensatz des Strings konvertiert wird
> nach ISO-8859-1 z.b. Dazu stellt PHP 2 verschiedene Extensions bereit
> wobei die 2. nicht iconf sondern iconv heist.
>
> Erst dann wird er in die DB geschrieben. Das alles sagte aber Hartmut
> auch schon.
>
> Gruss
> Joerg
Oh peinlich - ich sehe jetzt erst den Link...
Ich hatte den übersehen, da ich dachte das wäre irgendso ein Footer :-)
Danke!
Dann guck ich mir das dann mal an
Re: PHP und dBase mit falschen Umlauten
am 12.02.2005 19:25:41 von Goldfisch1980
Joerg Behrens schrieb:
> Goldfisch1980 wrote:
>
>> Hartmut Holzgraefe schrieb:
>>
>>> Goldfisch1980 wrote:
>>>
>>>> Ich habe eine dBase Datenbank, die ich über PHP auslese und dann in
>>>> eine mySQL Tabelle eintragen möchte.
>>>> Allerdings gehen mir bereits beim Auslesen die Umlaute und
>>>> Sonderzeichen verloren!
>>>> Was muss ich tun, dass diese erhalten bleiben?
>>>
>>>
>>>
>>>
>>> Vermutung: in der dBase Tabelle wird noch der DOS-Zeichensatz verwendet,
>>> PHP und MySQL verwenden aber normalerweise den europäischen Latin-1
>>> Zeichensatz, auch bekannt als ISO-8859-1.
>>>
>>> http://de.php.net/recode oder http://de.php.net/iconf helfen da
>>>
>>
>>
>> Das vermute ich fast auch, was kann ich denn dagegen tun, dass es in
>> mySQL und PHP passt. Ich kann die dBase Datei nicht mehr ändern.
>
>
> In dem nach dem Auslesen der Zeichensatz des Strings konvertiert wird
> nach ISO-8859-1 z.b. Dazu stellt PHP 2 verschiedene Extensions bereit
> wobei die 2. nicht iconf sondern iconv heist.
>
> Erst dann wird er in die DB geschrieben. Das alles sagte aber Hartmut
> auch schon.
>
> Gruss
> Joerg
Ich habe dieses Modul iconv.dll nicht. Versuche das unter Windows
nachzuinstallieren, dann bekomme ich durch kopieren der
c:\php\dlls\iconv.dll nach c:\php\php_iconv.dll nach dem entkommentieren
der Zeile "extension=php_iconv.dll" in der php.ini folgende
Fehlermeldung, sobald der PHP parser aufgerufen wird:
Unknow(): Invalid library (may not a PHP library)'php_iconv.dll'
Woran liegt das oder wie kann ich das modul denn nachinstallieren?
Ich will nicht auf PHP5 umsteigen deswegen!
-Lars
Re: PHP und dBase mit falschen Umlauten
am 12.02.2005 20:36:27 von Hartmut Holzgraefe
> Oh peinlich - ich sehe jetzt erst den Link...
> Ich hatte den übersehen, da ich dachte das wäre irgendso ein Footer=
:-)
Und ich hätte jetzt fast deine Antwort übersehen weil die soooo
weit unten stand ;)
Bitte mach dir doch in Zukunft die Mühe nur die relevanten Teile
des Postings auf das du antwortest zu zitieren. Dann müssen das
nicht alle deine Leser mental tun.
Footer erkennt man übrigens daran das sie mit einer Zeile eingeleitet
werden die nur "-- " enthält (das Leerzeichen ist wichtig).
Dann erkennt dein Newsreader (nicht jeder, aber dein Mozilla kann das)
das ordentlich als Signatur, stellt es in einer anderen Farbe dar
(siehe unten) und zitiert den Footer auch nicht mit wenn du antwortest.
--=20
Hartmut Holzgraefe, Senior Support Engineer .
MySQL AB, www.mysql.com
Are you MySQL certified? www.mysql.com/certification
Re: PHP und dBase mit falschen Umlauten
am 12.02.2005 20:48:53 von Hartmut Holzgraefe
Goldfisch1980 wrote:
> Ich habe dieses Modul iconv.dll nicht. Versuche das unter Windows
> nachzuinstallieren, dann bekomme ich durch kopieren der
> c:\php\dlls\iconv.dll nach c:\php\php_iconv.dll nach dem entkommentieren
> der Zeile "extension=php_iconv.dll" in der php.ini folgende
> Fehlermeldung, sobald der PHP parser aufgerufen wird:
>
> Unknow(): Invalid library (may not a PHP library)'php_iconv.dll'
>
iconv.dll ist die eigentliche iconv Bibliothek, php_iconv.dll
die Extension, die darauf aufsetzt.
php_iconv.dll ist nicht im php\dlls Verzeichnis sondern in
php\extensions.
Wenn du die iconv.dll einfach in php_iconf.dll umbenennst dann
beschwert sich PHP zu recht das das nicht wie eine PHP library
aussieht ...
--
Hartmut Holzgraefe, Senior Support Engineer .
MySQL AB, www.mysql.com
Are you MySQL certified? www.mysql.com/certification
Re: PHP und dBase mit falschen Umlauten
am 12.02.2005 22:45:24 von Joerg Behrens
Goldfisch1980 wrote:
[..]
> Ich habe dieses Modul iconv.dll nicht. Versuche das unter Windows
> nachzuinstallieren, dann bekomme ich durch kopieren der
> c:\php\dlls\iconv.dll nach c:\php\php_iconv.dll nach dem entkommentieren
> der Zeile "extension=php_iconv.dll" in der php.ini folgende
> Fehlermeldung, sobald der PHP parser aufgerufen wird:
>
> Unknow(): Invalid library (may not a PHP library)'php_iconv.dll'
>
> Woran liegt das oder wie kann ich das modul denn nachinstallieren?
> Ich will nicht auf PHP5 umsteigen deswegen!
Lege die iconv.dll in dein <%windir%> Verzeichnis und sorge das das
php_iconv.dll ueber die php.ini geladen wird.PHP (das package, nicht der
Installer) bringt alle diese Dateien mit. Was viele uebersehen ist das
eine der Extension weitere DLL Libraries brauchen welche dann in einem
PATH liegen muessen welche Windows uns seine Apps durchsuchen.
Einige wenige der Erweiterungen brauchen sogar 3rd. Party DLLs welche
man selber installieren muss um besagte PHP Extension benutzen zukoennen.
Das alles steht aber in der readme.txt.
Nach einem Neustart des Webservers solltest du in deinem phpinfo()
entsprechende Iconv infos sehen.
Gruss
Joerg
Re: PHP und dBase mit falschen Umlauten
am 13.02.2005 01:05:20 von Goldfisch1980
Joerg Behrens schrieb:
> Lege die iconv.dll in dein <%windir%> Verzeichnis und sorge das das
> php_iconv.dll ueber die php.ini geladen wird.PHP (das package, nicht der
> Installer) bringt alle diese Dateien mit. Was viele uebersehen ist das
> eine der Extension weitere DLL Libraries brauchen welche dann in einem
> PATH liegen muessen welche Windows uns seine Apps durchsuchen.
>
> Einige wenige der Erweiterungen brauchen sogar 3rd. Party DLLs welche
> man selber installieren muss um besagte PHP Extension benutzen zukoennen.
>
> Das alles steht aber in der readme.txt.
>
> Nach einem Neustart des Webservers solltest du in deinem phpinfo()
> entsprechende Iconv infos sehen.
>
> Gruss
> Joerg
Das habe ich bereits gemacht... Aber es fehlt ja dann die php_iconv.dll
Habe nur die iconv.dll im DLLS unterverzeichnis.
Welche Readme.txt und woher bekomme ich dann die entsprechende
php_iconv.dll ?
Ich habe das package (ZIP), ich habe nicht den installer von PHP
installiert.
-Lars
Re: PHP und dBase mit falschen Umlauten
am 13.02.2005 02:34:06 von Carsten Wiedmann
Goldfisch1980 schrieb:
> Das habe ich bereits gemacht... Aber es fehlt ja dann die
> php_iconv.dll Habe nur die iconv.dll im DLLS unterverzeichnis.
> Welche Readme.txt und woher bekomme ich dann die entsprechende
> php_iconv.dll ?
> Ich habe das package (ZIP), ich habe nicht den installer von PHP
> installiert.
Wie jede Extension, befindet sich auch die "php_iconv.dll" im
Verzeichnis: \php\extensions
Die "install.txt" befindet sich im Verzeichnis: \php
Ansonsten findest du das natürlich auch online zum Nachlesen im PHP-
Manual.
Im ZIP-Download von PHP 4.3.10 sind die Dateien definitiv vorhanden.
Gruß
Carsten
Re: PHP und dBase mit falschen Umlauten
am 13.02.2005 11:20:02 von Goldfisch1980
Carsten Wiedmann schrieb:
>
> Wie jede Extension, befindet sich auch die "php_iconv.dll" im
> Verzeichnis: \php\extensions
>
> Die "install.txt" befindet sich im Verzeichnis: \php
> Ansonsten findest du das natürlich auch online zum Nachlesen im PHP-
> Manual.
>
> Im ZIP-Download von PHP 4.3.10 sind die Dateien definitiv vorhanden.
>
> Gruß
> Carsten
Nein. Da habe ich schon gesucht. In dem Verzeichnis ist vorhanden:
25.03.2004 14:33 61.440 php_bz2.dll
25.03.2004 14:33 139.264 php_cpdf.dll
25.03.2004 14:33 36.864 php_crack.dll
25.03.2004 14:33 143.360 php_curl.dll
25.03.2004 14:33 24.576 php_db.dll
25.03.2004 14:33 389.120 php_dba.dll
25.03.2004 14:33 28.672 php_dbase.dll
25.03.2004 14:33 49.152 php_dbx.dll
25.03.2004 14:33 573.440 php_domxml.dll
25.03.2004 14:33 49.152 php_exif.dll
25.03.2004 14:33 36.864 php_fdf.dll
25.03.2004 14:33 20.480 php_filepro.dll
25.03.2004 14:33 778.240 php_gd2.dll
25.03.2004 14:33 24.576 php_gettext.dll
25.03.2004 14:33 106.496 php_hyperwave.dll
25.03.2004 14:33 114.688 php_ifx.dll
25.03.2004 14:33 593.920 php_imap.dll
25.03.2004 14:33 45.056 php_interbase.dll
25.03.2004 14:33 24.576 php_java.dll
25.03.2004 14:33 9.296 php_java.jar
25.03.2004 14:33 126.976 php_ldap.dll
25.03.2004 14:33 1.527.808 php_mbstring.dll
25.03.2004 14:33 36.864 php_mcrypt.dll
25.03.2004 14:33 20.480 php_mhash.dll
25.03.2004 14:33 24.576 php_mime_magic.dll
25.03.2004 14:33 188.416 php_ming.dll
25.03.2004 14:33 28.672 php_msql.dll
25.03.2004 14:33 40.960 php_mssql.dll
25.03.2004 14:33 65.536 php_oci8.dll
25.03.2004 14:33 45.056 php_openssl.dll
25.03.2004 14:33 32.768 php_oracle.dll
25.03.2004 14:33 540.672 php_pdf.dll
25.03.2004 14:33 131.072 php_pgsql.dll
25.03.2004 14:33 53.248 php_pspell.dll
25.03.2004 14:33 20.480 php_shmop.dll
25.03.2004 14:33 241.664 php_snmp.dll
25.03.2004 14:33 40.960 php_sockets.dll
25.03.2004 14:33 40.960 php_sybase_ct.dll
25.03.2004 14:33 62.000 php_w32api.dll
25.03.2004 14:33 61.440 php_xmlrpc.dll
25.03.2004 14:33 32.768 php_xslt.dll
25.03.2004 14:33 32.768 php_yaz.dll
25.03.2004 14:33 40.960 php_zip.dll
Sonst nix.
Ich habe php 4.3.5. Wo kann ich die Dateien denn nachladen?
Oder kann mir die jmd. per email schicken?
-Lars
Re: PHP und dBase mit falschen Umlauten
am 13.02.2005 13:00:36 von Hartmut Holzgraefe
Goldfisch1980 wrote:
> Carsten Wiedmann schrieb:
>>
>> Wie jede Extension, befindet sich auch die "php_iconv.dll" im=20
>> Verzeichnis: \php\extensions
..
>> Im ZIP-Download von PHP 4.3.10 sind die Dateien definitiv vorhanden.
> Nein. Da habe ich schon gesucht. In dem Verzeichnis ist vorhanden:
..
> Ich habe php 4.3.5. Wo kann ich die Dateien denn nachladen?
> Oder kann mir die jmd. per email schicken?
Das Aussagen über 4.3.10 nicht unbedingt für 4.3.5 zutreffen sollte
doch eigentlich klar sein?
Und das es die jeweils aktuelle PHP-Version auf http://php.net/
under 'download' gibt auch?
Also einfach herunterladen, lokal upgraden (dürte bei einer fast
ein Jahr alten Version eh mal angebracht sein) und glücklich sein ...
--=20
Hartmut Holzgraefe, Senior Support Engineer .
MySQL AB, www.mysql.com
Are you MySQL certified? www.mysql.com/certification
Re: PHP und dBase mit falschen Umlauten
am 13.02.2005 15:53:19 von Goldfisch1980
Hartmut Holzgraefe schrieb:
>
> Das Aussagen über 4.3.10 nicht unbedingt für 4.3.5 zutreffen sollte
> doch eigentlich klar sein?
>
> Und das es die jeweils aktuelle PHP-Version auf http://php.net/
> under 'download' gibt auch?
>
> Also einfach herunterladen, lokal upgraden (dürte bei einer fast
> ein Jahr alten Version eh mal angebracht sein) und glücklich sein ...
>
Okay.. Damit entferne ich mich zwar immer weiter von der alten PHP
Version die auf unserem Debian Server läuft, aber wenns nicht anders
geht....
Viele Grüße,
-Lars
Re: PHP und dBase mit falschen Umlauten
am 13.02.2005 16:43:38 von Goldfisch1980
Hartmut Holzgraefe schrieb:
> Goldfisch1980 wrote:
>
>> Ich habe eine dBase Datenbank, die ich über PHP auslese und dann in
>> eine mySQL Tabelle eintragen möchte.
>> Allerdings gehen mir bereits beim Auslesen die Umlaute und
>> Sonderzeichen verloren!
>> Was muss ich tun, dass diese erhalten bleiben?
>
>
> Vermutung: in der dBase Tabelle wird noch der DOS-Zeichensatz verwendet,
> PHP und MySQL verwenden aber normalerweise den europäischen Latin-1
> Zeichensatz, auch bekannt als ISO-8859-1.
>
> http://de.php.net/recode oder http://de.php.net/iconf helfen da
>
das iconv ist nun installiert und funktioniert!
Doch woher weiss ich nun, welche Codetabelle ich brauche?
Gibts es irgendwo eine Übersicht, dann kann man das ja ausprobieren, bis
es passt, oder kann ich die Codepage der dbf Datei irgendwie ermitteln.
Ich erhalte derzeit z.B.:
Zubehr
statt
Zubehör.
so sieht meine Konvertierungsfunktion aus:
function chrconvert($str) {
return iconv("ASCII","ISO-8859-1",$str);
}
Re: PHP und dBase mit falschen Umlauten
am 13.02.2005 18:12:25 von Hartmut Holzgraefe
Goldfisch1980 wrote:
> Okay.. Damit entferne ich mich zwar immer weiter von der alten PHP=20
> Version die auf unserem Debian Server läuft, aber wenns nicht anders =
> geht....
Wenn du eine Testumgebung betreiben willst dann solltest du diese
*komplett* identisch aufsetzen, d.h. auch gleiches OS usw.
Du kannst versuchen die php_iconv.dll aus 4.3.10 von 4.3.5 aus
zu benutzen, die Extension-APIs sollten wenn ich mich recht erinnere
zwischen den beiden Versionen binärkompatibel sein. Wirklich sinnvoll
ist ein solcher Mix aber nicht.
--=20
Hartmut Holzgraefe, Senior Support Engineer .
MySQL AB, www.mysql.com
Are you MySQL certified? www.mysql.com/certification
Re: PHP und dBase mit falschen Umlauten
am 13.02.2005 18:25:43 von Hartmut Holzgraefe
Goldfisch1980 wrote:
> das iconv ist nun installiert und funktioniert!
>=20
> Doch woher weiss ich nun, welche Codetabelle ich brauche?
Der MS-DOS PC Zeichensatz ist CP950 wenn ich mich recht erinnere
> Gibts es irgendwo eine Übersicht, dann kann man das ja ausprobieren, =
bis=20
> es passt, oder kann ich die Codepage der dbf Datei irgendwie ermitteln.=
Das iconf Kommandozeilentool liefert mit "iconv -l" eine komplette
Liste, das hilft dir aber unter Windows zunächst einmal weniger
vermutlich?
(fragt sich jetzt natürlich warum die ext/iconv keine entsprechende
Funktion iconv_get_encodings() oder so hat ...)
> so sieht meine Konvertierungsfunktion aus:
>=20
> function chrconvert($str) {
> return iconv("ASCII","ISO-8859-1",$str);
> }
iconv("CP950", "ISO-8859-1", $str);
sollte passen
--=20
Hartmut Holzgraefe, Senior Support Engineer .
MySQL AB, www.mysql.com
Are you MySQL certified? www.mysql.com/certification
Re: PHP und dBase mit falschen Umlauten
am 13.02.2005 21:49:54 von Goldfisch1980
Hartmut Holzgraefe schrieb:
> Goldfisch1980 wrote:
>
>
> iconv("CP950", "ISO-8859-1", $str);
>
> sollte passen
>
Nee. Ich erhalte damit dann sogar ne Warning:
Notice: iconv(): Detected illegal character in input string
die Liste mit den Zeichensätzen, kann man die niergends im Netz abrufen?
Ich kann doch nicht der einzigste sein, der dieses Problem hat???
-Lars
Re: PHP und dBase mit falschen Umlauten
am 13.02.2005 23:03:30 von Carsten Wiedmann
Goldfisch1980 schrieb:
> iconv("CP950", "ISO-8859-1", $str);
Da du wohl nicht in China wohnst, dürfte 950 nicht passen. Sinnvoll wäre
hier 437, 850 oder 1252.
> die Liste mit den Zeichensätzen, kann man die niergends im Netz
> abrufen? Ich kann doch nicht der einzigste sein, der dieses Problem
> hat???
Kann man. Den Link zur Beschreibung der zugrundeliegende libiconv,
findest du im PHP-Manual bei der Übersicht zur php_iconv - Extension.
Mit folgendem Code sollte sich das aber auch regeln lassen:
| function ANSII2DOS($text) {
| $search = array(
| chr(132), chr(142), chr(148), chr(153),
| chr(129), chr(154), chr(225)
| );
| $replace = array ('ä','Ä','ö','Ö','ü','Ü','ß');
| return str_replace($search, $replace, $text);
| }
(oder war's andersrum? *grübel*)
Gruß
Carsten
Re: PHP und dBase mit falschen Umlauten
am 13.02.2005 23:13:38 von Goldfisch1980
Carsten Wiedmann schrieb:
> Goldfisch1980 schrieb:
>
>
>>iconv("CP950", "ISO-8859-1", $str);
>
>
> Da du wohl nicht in China wohnst, dürfte 950 nicht passen. Sinnvoll wäre
> hier 437, 850 oder 1252.
>
>
Super, ja.
CP437 war es :-)
Vielen lieben Dank!!
Damit schließt sich endlich mal dieser Punkt :)