09.11.2008, 15:51
(Dieser Beitrag wurde zuletzt bearbeitet: 09.11.2008, 15:52 von frostschutz.)
Hallo,
ich hatte das schonmal im englischen Forum, eigentlich unter Bugs gepostet, dort wurde mein Posting aber kommentarlos in den allgemeinen Teil verschoben und niemand antwortet.
Mein Posting im englischen Forum: http://community.mybboard.net/thread-40223.html
Vielleicht liegt es ja an meinem schlechten Englisch, daher dachte ich, ich versuche es mal hier.
Ich möchte MyBB für ein mehrsprachiges Forum einsetzen. Das heißt ich brauche gute UTF-8 Unterstützung, damit z.B. deutsche Umlaute und japanische Schriftzeichen auf einer Seite funktionieren.
Das funktioniert beim MyBB von Haus aus eigentlich auch ganz gut, nur gibt es ein Feature, das hier dazwischenfunkt, und zwar das wordwrap (erzwungener Zeilenumbruch nach 80 Zeichen indem ein Leerzeichen eingefügt wird). Das ist ja eigentlich ein sehr sinnvolles Feature für den Fall daß jemand einen durchgehenden Text ohne Leerzeichen schreibt und damit das Forum-Layout zerschießt, wie z.B. in diesem BeispielBeispielBeispielBeispielBeispielBeispielBeispielBeispielBeispielBeispielBeispielBeisBeispielBeispielBeispielBeispielBeispielBeispielBeispielBeispielBeispielBeispielBeispielBeispielBeispielBeispielBeispielBeispielBeispielBeisBeispielBeispielBeispielBeispielBeispielBeispiel.
Der obige Beispieltext ist durchgehend geschrieben, aber MyBB fügt alle 80 Zeichen ein Leerzeichen ein, damit es trotzdem umgebrochen wird.
Wenn ich jetzt dasselbe aber mit UTF-8 Zeichen mache dann passiert das hier:
aäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜ
Hier in diesem String mal auf die Stellen mit Leerzeichen achten, da fehlt ein ü, ein Ö, und ein ä. Nur mit Umlauten ist das natürlich ein blödes Beispiel, aber z.B. Japanisch wird durchgehend mit UTF-8 Zeichen geschrieben und da gehen dann auf einmal Zeichen kaputt.
Grund dafür ist daß die my_wordwrap() Funktion im MyBB die Leerzeichen einfach so in den String einfügt, ohne auf UTF-8 Zeichen zu achten, die aus mehreren Bytes bestehen. Wenn also das Leerzeichen mitten in eine UTF-8 Bytefolge reinkommt, geht das Zeichen dadurch logischerweise kaputt.
Was kann ich da jetzt noch tun? Einen Bug melden im englischen Forum habe ich versucht, der wurde kommentarlos weggeschoben. Bei anderen Open Source Projekten mit richtigem Bugtracker steht dann meistens wenigstens ein Kommentar drunter warum oder zumindest von wem der Fehler abgelehnt wurde.
Mein Workaround bisher ist das Feature einfach abzuschalten (obwohl es eigentlich sinnvoll ist) oder selber am Code rumzuspielen (meine Änderungen sind aber nicht sauber und gehen spätestens beim nächsten MyBB Update wieder verloren).
Irgendwelche Tips?
ich hatte das schonmal im englischen Forum, eigentlich unter Bugs gepostet, dort wurde mein Posting aber kommentarlos in den allgemeinen Teil verschoben und niemand antwortet.
Mein Posting im englischen Forum: http://community.mybboard.net/thread-40223.html
Vielleicht liegt es ja an meinem schlechten Englisch, daher dachte ich, ich versuche es mal hier.
Ich möchte MyBB für ein mehrsprachiges Forum einsetzen. Das heißt ich brauche gute UTF-8 Unterstützung, damit z.B. deutsche Umlaute und japanische Schriftzeichen auf einer Seite funktionieren.
Das funktioniert beim MyBB von Haus aus eigentlich auch ganz gut, nur gibt es ein Feature, das hier dazwischenfunkt, und zwar das wordwrap (erzwungener Zeilenumbruch nach 80 Zeichen indem ein Leerzeichen eingefügt wird). Das ist ja eigentlich ein sehr sinnvolles Feature für den Fall daß jemand einen durchgehenden Text ohne Leerzeichen schreibt und damit das Forum-Layout zerschießt, wie z.B. in diesem BeispielBeispielBeispielBeispielBeispielBeispielBeispielBeispielBeispielBeispielBeispielBeisBeispielBeispielBeispielBeispielBeispielBeispielBeispielBeispielBeispielBeispielBeispielBeispielBeispielBeispielBeispielBeispielBeispielBeisBeispielBeispielBeispielBeispielBeispielBeispiel.
Der obige Beispieltext ist durchgehend geschrieben, aber MyBB fügt alle 80 Zeichen ein Leerzeichen ein, damit es trotzdem umgebrochen wird.
Wenn ich jetzt dasselbe aber mit UTF-8 Zeichen mache dann passiert das hier:
aäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜaäoöuüAÄOÖUÜ
Hier in diesem String mal auf die Stellen mit Leerzeichen achten, da fehlt ein ü, ein Ö, und ein ä. Nur mit Umlauten ist das natürlich ein blödes Beispiel, aber z.B. Japanisch wird durchgehend mit UTF-8 Zeichen geschrieben und da gehen dann auf einmal Zeichen kaputt.
Grund dafür ist daß die my_wordwrap() Funktion im MyBB die Leerzeichen einfach so in den String einfügt, ohne auf UTF-8 Zeichen zu achten, die aus mehreren Bytes bestehen. Wenn also das Leerzeichen mitten in eine UTF-8 Bytefolge reinkommt, geht das Zeichen dadurch logischerweise kaputt.
Was kann ich da jetzt noch tun? Einen Bug melden im englischen Forum habe ich versucht, der wurde kommentarlos weggeschoben. Bei anderen Open Source Projekten mit richtigem Bugtracker steht dann meistens wenigstens ein Kommentar drunter warum oder zumindest von wem der Fehler abgelehnt wurde.
Mein Workaround bisher ist das Feature einfach abzuschalten (obwohl es eigentlich sinnvoll ist) oder selber am Code rumzuspielen (meine Änderungen sind aber nicht sauber und gehen spätestens beim nächsten MyBB Update wieder verloren).
Irgendwelche Tips?