Zeichensatzproblem beim Wechsel von php4 zu php5

Hallo!
Kennt sich jemand mit Zeichensätzen bei Mysql aus und kann mir bei folgendem Problem helfen?

Eine Website soll von einem Server, auf dem php4 läuft, auf einen deren Server mit php5 verschoben werden. Dabei gibt es jedoch offensichtlich Probleme mit dem Zeichensatz:

Alter Server (php4): http://www.bokbyen.no
Neuer Server (php5): http://p5.bokbyen.no

Anscheinend ist es so, dass bei php4 latin1 die Grundeinstellung ist, und bei php5 utf8.
Alle Webseiten sind mit dem Eintrag

versehen.

Ich habe auch schon probiert, diese Zeilen bei der Verbindung zum Server einzufügen (nach Host, Nutzer, Passwort)
mysql_query(„SET NAMES latin1“);
mysql_query(„SET CHARACTER_SET latin1“);
was aber leider auch keine Veränderung brachte.

Da ich auf die Server- und Mysql-Einstellungen keinen Einfluss habe, muss das Problem wohl irgendwie mit php gelöst werden.

Weiss jemand Rat?

Beste Grüße
Karen

Ach ja, die nicht angezeigten Zeichen sind Sonderzeichen (Norwegische Buchstaben).

Gruß Karen

Eine Website soll von einem Server, auf dem php4 läuft, auf
einen deren Server mit php5 verschoben werden. Dabei gibt es
jedoch offensichtlich Probleme mit dem Zeichensatz:

Alter Server (php4): http://www.bokbyen.no
Neuer Server (php5): http://p5.bokbyen.no

Da ich auf die Server- und Mysql-Einstellungen keinen Einfluss
habe, muss das Problem wohl irgendwie mit php gelöst werden.

das problem ist aber die servereinstellung - schau mal bei content-type.
das problem ist also am server zu beheben.
ein workaround koennte sein von jeder php-seite selbst den header als:

header("Content-Type: text/html; charset=ISOxxx");

zu senden.

deine header vom p5:

HTTP/1.x 200 OK
Date: Tue, 01 Apr 2008 13:10:19 GMT
Server: Apache/2.2.3 (Debian) PHP/5.2.0-8+etch10
X-Powered-By: PHP/5.2.0-8+etch10
Content-Length: 5724
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8
X-Pad: avoid browser bug

Hallo Jörg,
vielen Dank für die Antwort.

das problem ist aber die servereinstellung - schau mal bei
content-type.
das problem ist also am server zu beheben.

Der Server wird von vielen genutzt, da kann ich leider nichts ändern und bin auch nicht befugt dazu.

ein workaround koennte sein von jeder php-seite selbst den
header als:

header(„Content-Type: text/html;
charset=ISOxxx“);

zu senden.

Wie mache ich das denn konkret? Als ich die Zeile nach der Verbindung zum Server eingefügt hatte (nach Host, Nutzer, Passwort), bekam ich die Fehlermeldung, dass bereits ein header gesendet wurde.

Gruß Karen

Hallo Jörg,
vielen Dank für die Antwort.

das problem ist aber die servereinstellung - schau mal bei
content-type.
das problem ist also am server zu beheben.

Der Server wird von vielen genutzt, da kann ich leider nichts
ändern und bin auch nicht befugt dazu.

mit server ist an der stelle der vhost p5… gemeint - der wird nur von dir genutzt und es sollte rein techn. ein leichtes fuer den admin sein diesen zu konfigurieren. aber das sind deine interna :smile:

ein workaround koennte sein von jeder php-seite selbst den
header als:

header(„Content-Type: text/html;
charset=ISOxxx“);

zu senden.

Wie mache ich das denn konkret? Als ich die Zeile nach der
Verbindung zum Server eingefügt hatte (nach Host, Nutzer,
Passwort), bekam ich die Fehlermeldung, dass bereits ein
header gesendet wurde.

nochmal als hinweis: das problem hat nix mit mysql zu tun.
http://www.php-faq.de/q/q-fehler-header.html

zum testen solltest du eine leere test.php mit genau der oben stehenden zeile und beispiel text mit sonderzeichen erstellen.

Hallo Jörg,
jetzt habe ich verstanden, was ich machen sollte, und hab’s auch hingekriegt. Die betreffende Zeile habe ich in meine db_connect.inc vor der Verbindung mit der Datenbank eingefügt. Jetzt werden alle Sonderzeichen dargestellt.

Vielen Dank für die Hilfe!

Beste Grüße
Karen