php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Character Set / Encoding Umstellung von ISO-8859-1 auf ...?


 
Nuramon
26-11-2008, 14:46 
 
Hi,

ich habe das Problem, dass ein relativ großes Projekt in iso-8859-1 realisiert wurde (wie so oft bei alten PHP Seiten). Mein Problem ist jetzt, dass dort jetzt vermehrt osteuropäische Sprachen vorkommen, dessen Zeichen natürlich durch iso-8859-1 nicht abgedeckt sind.

Jetzt stellt sich die Frage was besser wäre:

Umstellung auf Unicode bzw. UTF-8 wäre sicherlich das optimalste, aber funktioniert das auch sinnvoll mit PHP4? htmlentities hat wenigstens den charset-Parameter ab 4.1.0 dabei...

Man müsste halt alle Files und Daten in der Datenbank umkonvertieren und bei PHP aufpassen, dass alle Funktionen auch mit Unicode funktionieren. (Es ist PHP 4.3.10 im Einsatz)


Eine andere (und bequemere) Möglichkeit wäre, statt iso-8859-1 den windows-1250 oder windows-1252 Zeichensatz zu verwenden. Habt ihr da wer Erfahrung damit, ob es reichen würde einfach nur die Header zu ändern? Großteils müsste sich ja iso-8859-1 mit windows-1250 decken, oder?

Und andere Frage: gibt es Kompatibilitätsprobleme mit anderen Betriebssystemen, wenn windows-1250 verwendet wird?

Vielen Dank für eure Hilfe schonmal. :)

(PS: Nein, ein Update auf PHP5 kommt hier atm nicht in Frage ;))

 
jmc
26-11-2008, 22:19 
 
Das mit htmlspecialchars ist 1. nicht sinnvoll, da nur sehr begrenzt möglich und zweitens gibt es für viele Zeichen gar keine "special chars". Du musst es Byte für Byte machen, dann klappt das super.
windows-1250 ist keine wirklich sinnvolle Lösung.

 
ghostgambler
26-11-2008, 22:27 
 
Eigentlich braucht man überhaupt keine Zeichen bei der Ausgabe in HTML-Entities zu kodieren, außer < > & und ".
Der Rest ist ja so etwas von egal, wenn die HTTP-Header richtig sind.

Und wenn du eh den Zeichensatz umstellst, dann gleich auf UTF8.
Sollte auch bei php4 möglich sein.
Kannst ja mal lokal daheim ausprobieren, ist ja kein Ding.

 
asp2php
26-11-2008, 23:15 
 
Ja, mit PHP4 ist möglich. Meine Seite wird in USA gehostet und darauf ist immer noch Apache 1.3 + PHP 4.x.

 
Nuramon
27-11-2008, 12:31 
 
Ok danke. Ich weiß zwar nicht, was ihr gemeint habt mit htmlspecialchars(), aber ich werde diese Funktion nicht verwenden um nicht-latin-1 Zeichen zu escapen, sondern mir ging es darum, dass ich zumindest von dieser Funktion weiß, dass sie in PHP4 Probleme mit UTF-8 macht, wenn man nicht explizit den Zeichensatz übergibt. Genauso auch strtolower(), da PHP intern mit latin-1 arbeitet.

Auf diese Dinge müsste ich ja aufpassen, wenn ich auf UTF-8 umstelle, aber da habe ich bisher nur Erfahrung mit PHP5.

Abgesehen davon, für die Lösung mit windows-1250 habt ihr keine Erfahrungen? Das wäre nämlich eigentlich die bevorzugte Vorgehensweise, weil man dann nicht alles auf UTF-8 umstellen muss. ;)

 
PHP-Desaster
27-11-2008, 12:45 
 
Auf diese Dinge müsste ich ja aufpassen, wenn ich auf UTF-8 umstelle, aber da habe ich bisher nur Erfahrung mit PHP5.Die String-Funktionen in PHP5 sind auch noch nicht Unicode-fähig, das kommt erst in PHP5.3 bzw. PHP6 dazu. Aber mit den mb-Funktionen kommt man da schon auch in kleineren Versionen klar.

Abgesehen davon, für die Lösung mit windows-1250 habt ihr keine Erfahrungen? Das wäre nämlich eigentlich die bevorzugte Vorgehensweise, weil man dann nicht alles auf UTF-8 umstellen muss. ;)Eine Zeichensatzänderung findet ja eh statt, da kannst du besser direkt UTF-8 nehmen und dir Probleme mit dem 1250-Zeichensatz in der Zukunft direkt sparen.

 
Nuramon
27-11-2008, 14:42 
 
Original geschrieben von PHP-Desaster
Die String-Funktionen in PHP5 sind auch noch nicht Unicode-fähig, das kommt erst in PHP5.3 bzw. PHP6 dazu. Aber mit den mb-Funktionen kommt man da schon auch in kleineren Versionen klar.
Ja eh, da weiß ich zumindest worauf ich aufpassen muss, deswegen wollte ich eigentlich wissen, ob es im Unterschied zu PHP5 bei PHP4 noch Dinge gibt, die problematisch sein könnten. Aber gut, anscheinend dürfte sich das nicht sonderlich unterscheiden.

Original geschrieben von PHP-Desaster
Eine Zeichensatzänderung findet ja eh statt, da kannst du besser direkt UTF-8 nehmen und dir Probleme mit dem 1250-Zeichensatz in der Zukunft direkt sparen.
Naja, der Hintergedanke ist ja, dass sich der windows-1250 Zeichensatz großteils mit latin-1 deckt, d.h. ich muss die Dateien (meines Wissens nach) ohnehin nicht umkonvertieren...oder liege ich da falsch?

Die betroffenen Texte, die den anderen Zeichensatz benötigen, kommen alle aus der Datenbank..

 
combie
27-11-2008, 14:59 
 
Heutzutage kann man ganz entspannt davon ausgehen, dass alle beteidigten Programme mit utf-8 umgehen können. Und bei Sprachmischmasch gibts eigentlich keine Alternative zu UTF.

Naja, der Hintergedanke ist ja, dass sich der windows-1250 Zeichensatz großteils mit latin-1 deckt, d.h. ich muss die Dateien (meines Wissens nach) ohnehin nicht umkonvertieren...oder liege ich da falsch?
Wie soll ichs nur sagen.....
Nagut: Pfusch!!
Und die Keule wird dir folgen und dich irgendwann unerwartet aus dem Hinterhalt treffen.


im Unterschied zu PHP5 bei PHP4 noch Dinge gibt, die problematisch sein könnten.
Die größten Änderungen gabs im OOP Bereich.
Da PHP4 mittlerweile als tot gilt, sollte man sich auch nicht mehr damit beschäftigen.

Warum willst du nicht umstellen?

 
Nuramon
27-11-2008, 16:41 
 
Original geschrieben von combie
Wie soll ichs nur sagen.....
Nagut: Pfusch!!
Und die Keule wird dir folgen und dich irgendwann unerwartet aus dem Hinterhalt treffen.

[...]

Die größten Änderungen gabs im OOP Bereich.
Da PHP4 mittlerweile als tot gilt, sollte man sich auch nicht mehr damit beschäftigen.

Warum willst du nicht umstellen?

Naja, was soll ich sagen. Bei dem Alter der Applikationen sind Umstellungen mit viel Aufwand und Kosten verbunden, die sich im Falle von PHP5 einfach nicht auszahlen.
Bezogen auf UTF-8 bin ich ja am Überlegen, aber man muss es dem Kunden natürlich auch schmackhaft machen und in diesem Fall würde der Nutzen wahrscheinlich den Kosten hinterherhinken.

Da wäre eine "günstige" Lösung mit windows-1250 natürlich willkommen und in meinen Augen auch eine vernünftige Übergangslösung. Wenn es mal Relaunches gibt, sollten die sowieso in Unicode gehalten werden, keine Frage..

Nunja, danke jedenfalls für eure Kommentare zu dem Thema.

 
combie
27-11-2008, 16:52 
 
Bei dem Alter der Applikationen sind Umstellungen mit viel Aufwand und Kosten verbunden,
Ist das eine Vermutung?

Ich habe vor wenigen Monaten eine uralte und auch recht fette Anwendung von PHP3 nach 5 portiert...
Hat ca 20 Min gedauert, dann lief sie wieder.
Im Prinzip wars nur eine Änderung von *.php3 auf *.php

 
Nuramon
27-11-2008, 17:14 
 
Schon eine Vermutung...bei dem Funktionsumfang dauert es ewig alles durchzutesten. Abgesehen davon, ist ja jetzt eh nicht PHP4 das Problem, sondern der Zeichensatz. ;)


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:39 Uhr.