Seite 1 von 1

Umlaute Problem mit PHP 5.4

Verfasst: Mi 27. Mär 2013, 17:42
von blue
Hallo zusammen
Hoffentlich kenn mir jemdand helfen! Bei meinem Webspace wurde die PHP Version von 5.3 auf 5.4 angehoben.
Jetzt habe ich ein Problem beim Eintragen von neuen Filmen.
Jedes Feld in dem ein Umlaut vorkommt wird nicht mehr in der MySQL Datenbank abgespeichert. Manuelles eintragen in die Datenbank von Umlauten funktioniert normal.

Nach längerer Recherche habe ich folgendes gefunden:
Missing some chars like german umlauts after use of htmlspecialchars? That's because the third param encoding has changed it's default value in PHP 5.4 from ISO-8859-1 to UTF-8.

Possible solution #1:
Change your code from this ...
<?php htmlspecialchars( 'äöü' ); ?>
... to this:
<?php htmlspecialchars ( 'äöü' , ENT_COMPAT | ENT_HTML401 , 'ISO-8859-1' ); ?>

Possible solution #2:
Create a wrapper function and replace htmlspecialchars( to i.e. isohtmlspecialchars( with your IDE/editor/shell...

Example of a wrapper function:
<?php
function isohtmlspecialchars( $str ){
return htmlspecialchars ( $str , ENT_COMPAT | ENT_HTML401 , 'ISO-8859-1' );
}
?>
Hilft mir das irgendwie? Die Funktion htmlspecialchars konnte ich per Suche leider nirgends finden. Kann mir jemand weiterhelfen? Vielleicht auch ein Tipp in welcher PHP Datei ich eine Anpassung vornehmen muss?

Re: Umlaute Problem mit PHP 5.4

Verfasst: Mi 27. Mär 2013, 18:36
von der-domi
Hallo!
blue hat geschrieben:Jedes Feld in dem ein Umlaut vorkommt wird nicht mehr in der MySQL Datenbank abgespeichert.
Was passiert denn? Es gibt doch sicherlich eine Fehlermeldung.
blue hat geschrieben:Hilft mir das irgendwie? Die Funktion htmlspecialchars konnte ich per Suche leider nirgends finden.
Nö und richtig, da die Funktion auch nicht verwendet wird. I.d.R. werden alle Umlaute durch die Funktion htmlentities konvertiert und in der DB gespeichert. Es ist eher dort der Fehler zu suchen.

Re: Umlaute Problem mit PHP 5.4

Verfasst: Di 2. Apr 2013, 13:09
von blue
Hallo Domi,

sorry für die späte Rückmeldung... danke erstmal für den Hinweis!
Ich habe gerade nochmal zum Test versucht einen Film einzutragen. Es kommt wirklich zu keiner Fehlermelung.

Gerade habe ich folgendes zu htmlentities gefunden:
http://php.net/manual/de/function.htmlentities.php

Unten im Changelog findet sich für Version 5.4 folgender eintrag:
Der Standardwert für encoding wurde zu UTF-8 geändert.

Ich werde die Tage versuchen das wieder auf ISO-8859-1 zu ändern und melde mich dann ob sich was getan hat.

Re: Umlaute Problem mit PHP 5.4

Verfasst: Di 2. Apr 2013, 19:03
von blue
Es hat geklappt :-)
Falls noch bei anderen das gleiche Problem auftaucht hier die Lösung:

In diversen Dateien muss die Funktion htmlentities um folgende Parameter erweitert werden:

Code: Alles auswählen

ENT_COMPAT | ENT_HTML401 , 'ISO-8859-1'
Ich musste in folgenden Dateien die Anpassungen vornehmen:

index2 (für die Kommentare)
clas.ctvar (für die Suche, die ging auch nicht mehr mit Umlauten)
Medu598_sentFilmEinfuegen

Falls man noch andere Dinge benötigt (neue Tonformate, Formate, Collectionen,...) muss es auch in den entsprechenden Dateien angepasst werden.

Vielen Dank nochmal an den Domi für den goldenen Tipp!

Re: Umlaute Problem mit PHP 5.4

Verfasst: Di 2. Apr 2013, 20:27
von der-domi
Hallo,

schön, dass du es gefunden hast. Evtl. kann man auch eine globale Einstellung mit ini_set (siehe settings/php.php) machen. Aber das ist nur eine Vermutung...

Re: Umlaute Problem mit PHP 5.4

Verfasst: Sa 28. Sep 2013, 09:48
von Gast
Hallo zusammen,

ich habe das gleiche Problem und weiss leider nicht an welcher Stelle und wie ich die o.g. Änderungen vornehmen soll.

Vielleicht kann jemand den Code bzw. Codeschnipsel posten.

Vorab vielen Dank.