Hallo.
Bin momentan am verzweifeln.
Zur Vorgeschichte: Habe seit fast 2 Jahren ein Gallerie/Blog-System in Entwicklung, nähert sich der Fertigstellung, derzeit im grossen Offlinetest+Bugfixing, Adminbereich ist über Sprachdateien mehrsprachig ausgelegt.
Im Zuge des allgemeinen Hypes habe ich nun auch die fixe Idee, das Ganze (Admin- und Ausgabebereich) sinvollerweise von ISO auf UTF-8 Charset umzustellen.
Zwecks der verschiedenen Probleme habe ich seit längerem Prof. Google und viele, viele Forensuchmaschinen heisslaufen lassen, sowohl dt. als auch eng. - ich finde einfach nichts aussagekräftiges. K.a. ob ich mich einfach zu blöd anstelle oder etwas übersehen habe...
Problem 1: Datenbank
Das System läuft stabil mit SQlite oder wahlweise MySQL >=3.23 laufen, Unicode wird erst ab 4.1 unterstützt, SQlite kann wohl entweder für ISO oder UTF-8 kompiliert werden, von einer Benutzung UTF-8/PHP/SQlite wurde abgeraten (war glaube ich auf der SQlite-Website).
Problem 2: PHP
...unterstützt UTF-8 nicht von Haus aus - einige Stringfunktionen sind beispielsweise nicht kompatibel, erst durch die OPTIONALE Mbstring-Extension wird UTF-8 Unterstützung möglich. Kann aber nicht vorausgesetzt werden.
utf8_de/encode funktionieren auch nur mit dem Standart-ISO-Charset.
Positiv: preg_-Funktionen können mit UTF-8 Strings benutzt werden;
Mein bisheriger Plan war also:
- UTF-8 erst ab MySQL>=4.1,mit mbstring extension installiert.
- SQlite/MySQL<4.1, kein mbstring => standart ISO 8859-1 Charset.
Andererseits verwendet ja zum Beispiel WordPress UTF-8, setzt als Requirement MySQl ab 3.23 voraus, von mbstring finde ich nichts.
Wie machen die das also? Wird beispielsweise Text als UTF-8 eingegeben, quasi "as is" in die DB gespeichert, ebenso einfach wieder ausgegeben - voila, UTF-8?
Wie funktioniert dann z.B. die Sortierung via SORT BY xyz? Die Datenbank denkt ja immernoch, der Sortierparameter besteht aus 1Byte-Zeichen?
Auf einigen Seiten wurde die Problematik angesprochen (a ´la "man muss dann eben auf Sortierfunktionalität verzichten"), allerdings habe ich noch nie eine Lösung gefunden...
Viel Blabla, was suche ich jetzt eigentlich - Antworten zur Frage nach der Verwendung des UTF-8 Charsets mit PHPMySQLab 3.23, keine mbstring extenstion installiert - also quasi eine Minimalkonfiguration.
Wie funktioniert es, hat jemand nützliche Links oder Ideen/Denkanstösse - oder hat jemand die gleiche Problematik hinter sich und evtl. einen Lösungsansatz?
Die sauberste Lösung wäre sicherlich wie o.g. - MySQL>=4.1 +mbstring required, sonst kein UTF-8.
Trotzdem reizt es mich, das Ganze auch unter MySQL3.23 zum Laufen zu bekommen - irgendwie scheint es ja zu funktionieren...
Freue mich über jede Hilfe.
Bin momentan am verzweifeln.
Zur Vorgeschichte: Habe seit fast 2 Jahren ein Gallerie/Blog-System in Entwicklung, nähert sich der Fertigstellung, derzeit im grossen Offlinetest+Bugfixing, Adminbereich ist über Sprachdateien mehrsprachig ausgelegt.
Im Zuge des allgemeinen Hypes habe ich nun auch die fixe Idee, das Ganze (Admin- und Ausgabebereich) sinvollerweise von ISO auf UTF-8 Charset umzustellen.
Zwecks der verschiedenen Probleme habe ich seit längerem Prof. Google und viele, viele Forensuchmaschinen heisslaufen lassen, sowohl dt. als auch eng. - ich finde einfach nichts aussagekräftiges. K.a. ob ich mich einfach zu blöd anstelle oder etwas übersehen habe...
Problem 1: Datenbank
Das System läuft stabil mit SQlite oder wahlweise MySQL >=3.23 laufen, Unicode wird erst ab 4.1 unterstützt, SQlite kann wohl entweder für ISO oder UTF-8 kompiliert werden, von einer Benutzung UTF-8/PHP/SQlite wurde abgeraten (war glaube ich auf der SQlite-Website).
Problem 2: PHP
...unterstützt UTF-8 nicht von Haus aus - einige Stringfunktionen sind beispielsweise nicht kompatibel, erst durch die OPTIONALE Mbstring-Extension wird UTF-8 Unterstützung möglich. Kann aber nicht vorausgesetzt werden.
utf8_de/encode funktionieren auch nur mit dem Standart-ISO-Charset.
Positiv: preg_-Funktionen können mit UTF-8 Strings benutzt werden;
Mein bisheriger Plan war also:
- UTF-8 erst ab MySQL>=4.1,mit mbstring extension installiert.
- SQlite/MySQL<4.1, kein mbstring => standart ISO 8859-1 Charset.
Andererseits verwendet ja zum Beispiel WordPress UTF-8, setzt als Requirement MySQl ab 3.23 voraus, von mbstring finde ich nichts.
Wie machen die das also? Wird beispielsweise Text als UTF-8 eingegeben, quasi "as is" in die DB gespeichert, ebenso einfach wieder ausgegeben - voila, UTF-8?
Wie funktioniert dann z.B. die Sortierung via SORT BY xyz? Die Datenbank denkt ja immernoch, der Sortierparameter besteht aus 1Byte-Zeichen?
Auf einigen Seiten wurde die Problematik angesprochen (a ´la "man muss dann eben auf Sortierfunktionalität verzichten"), allerdings habe ich noch nie eine Lösung gefunden...
Viel Blabla, was suche ich jetzt eigentlich - Antworten zur Frage nach der Verwendung des UTF-8 Charsets mit PHPMySQLab 3.23, keine mbstring extenstion installiert - also quasi eine Minimalkonfiguration.
Wie funktioniert es, hat jemand nützliche Links oder Ideen/Denkanstösse - oder hat jemand die gleiche Problematik hinter sich und evtl. einen Lösungsansatz?
Die sauberste Lösung wäre sicherlich wie o.g. - MySQL>=4.1 +mbstring required, sonst kein UTF-8.
Trotzdem reizt es mich, das Ganze auch unter MySQL3.23 zum Laufen zu bekommen - irgendwie scheint es ja zu funktionieren...
Freue mich über jede Hilfe.
Kommentar