anpera.net https://anpera.dyndns.org/phpbb3/ |
|
Lotgd in utf-8 https://anpera.dyndns.org/phpbb3/viewtopic.php?f=25&t=4724 |
Seite 1 von 1 |
Autor: | Auric [ Mi 19 Nov, 2008 11:20 ] |
Betreff des Beitrags: | Lotgd in utf-8 |
Hallo alle zusammen. Ich wollte just zu Testzwecken einmal ein sauberes LotgD aufsetzen, was auch kein Problem darstellte. Dabei fiel mir allerdings auf, dass die die Dateien ja immer noch in latin-1 kodiert sind. Sie per recode oder iconv neu zu kodiern klappt auch, allerdings bekomme ich apache und php nicht so konfiguriert, das sie das ganze auch sauber ausgeben. Ich habe es nun mit default_charset in php und AddDefaultCharset für den Apachen jeweils mit utf-8 getestet und firefox meldet auch einen Unterschied (standardmäßig latin-1, bei setzen von default_charset utf8), allerdings sind die Zeichen immer noch zerschossen ("Jägerhütte" statt "Jägerhütte"). Wisst ihr welche Flags oder Direktiven ich nutzen muss? Möglichst ohne komplexere Angelegenheiten wie iconv und mbstring in php - wenn das ganze tut würde ich es wohl als komplett angepasste Version hier rein stellen. Noch einmal: Es geht nur um die Auslieferung der aus den Dateien stammenden Inhalte durch den Server, unabhängig von MySQL etc. Texteditoren stellen die Dateien in beiden Kodierungen korrekt da. Schönen Tag noch, Auric |
Autor: | Harthas [ Mi 19 Nov, 2008 15:28 ] |
Betreff des Beitrags: | Re: Lotgd in utf-8 |
Wie wäre es denn mit einem utf8_decode in der output-Funktion? Dann würde zumindest die Ausgabe stimmen. Auch wenn dies wohl nur Ursachenbekämpfung sein würde - Und nicht die aktuelle Lösung. (Ausser das Problem liegt an Firefox - Oder dem Browser allgemein) |
Autor: | Eliwood [ Mi 19 Nov, 2008 18:01 ] |
Betreff des Beitrags: | Re: Lotgd in utf-8 |
Ich musste, um das zu erreichen, folgendes tun: - Umkodierung aller Dateien nach UTF-8 - Setzen des Headers "Content-type" auf "text/html; charset=UTF-8" - Ersetzen aller HTMLEntities()-Funktionen durch HTMLSpecialchars() - Überladen aller Stringfunktionen durch ihre MB-Varianten (über .htaccess, eigener Wrapper wäre vielleicht plattformunabhängiger) - Explizites setzen der MySQL-Verbindung auf UTF-8 bei jedem DB-Connect. Das Umkodieren der Dateien hab ich per Hand gemacht - Ctrl+X, umstellen des Charsetzs, Ctrl+V. Hat Problemlost geklappt mit Geany. |
Autor: | Nightborn [ Do 20 Nov, 2008 09:02 ] |
Betreff des Beitrags: | Re: Lotgd in utf-8 |
Da ich derjenige war, die die 1.x.x DP Edition UTF-8 (oder was auch immer) gemacht hat, dazu von mir was nötig war:
Klappt prima soweit. |
Autor: | Eliwood [ Do 20 Nov, 2008 15:55 ] |
Betreff des Beitrags: | Re: Lotgd in utf-8 |
Ganz einfach: HTMLSpecialchars ersetzt ", ', <, > und &. Mehr braucht UTF-8 nicht. Es ist also Unsinnig, ein Table-Lookup machen über HTMLEntities, da es sowieso nicht mehr gibt. Getestet, was schneller ist, hab ich allerdings nicht, lasse mich eines besseren Belehren. HTMLEntities sollte man nur gebrauchen, wenn man unterschiedliche Charsets verwenden lässt. Und ob man nun alle HTMLEntities() erweitert, oder durch die andere Funktion ersetzt - vom Aufwand dürfte es ungefähr das gleiche sein. Den MySQL-Server müsste man in den Konfigurationen umstellen, um UTF-8 zu bekommen. Ein reines Umstellen der Datenbank auf UTF-8 hat *nicht* geholfen. Die Anfragen kamen trotzdem mit ISO-8859-1 zurück - frag mich nicht warum. Kann sein, dass andere MySQL-Versionen da anders reagieren. Ich speichere Texte allerdings in Strings und nicht Binär - kann daran liegen. 1.1.x speichert die Übersetzungen ja Binär? |
Autor: | Nightborn [ Do 20 Nov, 2008 16:21 ] |
Betreff des Beitrags: | Re: Lotgd in utf-8 |
Hm, okay - die Special Chars wandeln aber sonst brav die Zeichen in HTML konforme um, ja? Sonst machts ja wenig Sinn - meine japanischen Zeichen müssen ja auch als Nav erscheinen können. Die Übersetzungen sind schon binär - BLOB... was eher problematisch ist :-/ ich würd die generell in UTF-8 lieber sehen. So heißt es "stell Dein Charset auf meins, dann gehen auch die Übersetzungen". Egal. Dafür sind in allen meiner Tabellen UTF-8 Daten drin - und ich hatte an sich nie Probleme damit - nur beim Import über Kommandozeile darf man das SET NAMES nicht vergessen - ansonsten ... anfangs waren nichtmal die Tabellen UTF-8...sondern latin1 - ging dennoch. |
Autor: | Eliwood [ Do 20 Nov, 2008 18:39 ] |
Betreff des Beitrags: | Re: Lotgd in utf-8 |
Nein. Ausser die erwähnten werden keine Zeichen umgewandelt. Ist auch herzlich sinnlos bei UTF-8. ä und Co werden ja nur gebraucht, wenn es das Zeichen eben nicht im aktuellen Zeichensatz gibt. |
Autor: | Auric [ So 30 Nov, 2008 16:08 ] |
Betreff des Beitrags: | Re: Lotgd in utf-8 |
Ok, per HTMLSpecialchars und den passenden Querys an die DB für die richtige Kodierung läuft nun alles zu meiner Zufriedenheit. Ich plane das ganze als "saubere" ext3 (GER) Variante hier hoch zu laden, wenn der gröbste Dreck (keine Single-Quotes in Array-Keys usw.) erstmal raus ist. Die Änderungen für PHP5 und eben UTF-8 sind schon drin, das Commentary-MiO-Bundle mit Farbhack ebenso. Den derzeitigen Stand gibt es unter http://dav.toifras.de/blanklotgd/trunk/ Jetzt bitte nicht ausschimpfen, das ich es den Faulpelzen noch einfacher machen will *g* Falls noch jemand empfehlenswerte mods kennt, die in die Distribution mit rein sollen bitte hier melden. |
Autor: | Nightborn [ So 30 Nov, 2008 16:38 ] |
Betreff des Beitrags: | Re: Lotgd in utf-8 |
Zitat: Jetzt bitte nicht ausschimpfen, das ich es den Faulpelzen noch einfacher machen will *g* ? Wenn jemand etwas konformer macht sowie bugfixes (was das mit den singlequotes ist) einpflegt, halte ich das nicht für ne Hilfe für Faulpelze. Ich freu mich ja auch, wenn ne Software die ich mir runterlade funktioniert ![]() "Danke" statt Ausschimpfen von mir =) |
Autor: | Tidus [ Di 02 Dez, 2008 13:50 ] |
Betreff des Beitrags: | Re: Lotgd in utf-8 |
jo find ich auch gut, ich habe das alles gemacht und muss sagen das es sehr aufwendig ist, und sich viele vlt auch nicht insoweit damit auskennen und dneke es wäre gut für die neulinge wen nsie sauberen code als vorlage haben, damit wir nicht immer darauf hinweisen müssen, außerdem tust du das für die allgemeinheit und das ist doch schonmal was ![]() mach weiter so auric =D |
Autor: | Eichi [ Do 04 Dez, 2008 00:24 ] |
Betreff des Beitrags: | Re: Lotgd in utf-8 |
Ich muss gestehen, ich hab in manchen alten Dateien immernoch schwachfug wie singlequotes drinne, leider, aber das ist mittlereile so viel und ich hab sooo viel zu tun.. ![]() Ne ich finds auch super, wenns einmal erstmal sauber ist, hat man doch auch gute Beispiele und so, Ich täte sicher von Anfang an sauberer programmieren, wenn ich mir bedenke wieviel Arbeit ich mir damit erspart habe, außerdem, so werden in Zukunft auch weniger Leutz hier ihre Fehler mit singlequotes usw. haben, wie Tidus meinte, ist doch ein gutes Werk für uns alle ![]() Auch von mir *anfeuer* weiter so ![]() LG, Eichi |
Autor: | Welv [ Sa 27 Jun, 2009 17:03 ] |
Betreff des Beitrags: | Re: Lotgd in utf-8 |
*Ausgrab* Da ich mein Logd gerne auf utf8 umstellen möchte, aus den Beschreibungen jedoch nicht ganz schlau werde, würde ich mich über eine kleine Hilfestellung sehr freuen. Also, ich hab einen mehr oder weniger aktuellen xampp mit php 5 und ein LoGD 0.9.7 +jt ext (GER) 3 Mein Fortschritt... Eliwood hat geschrieben: Ich musste, um das zu erreichen, folgendes tun:
- Umkodierung aller Dateien nach UTF-8 Erledigt - Setzen des Headers "Content-type" auf "text/html; charset=UTF-8" Wo und wie genau? - Ersetzen aller HTMLEntities()-Funktionen durch HTMLSpecialchars() Erledigt - Überladen aller Stringfunktionen durch ihre MB-Varianten (über .htaccess, eigener Wrapper wäre vielleicht plattformunabhängiger) Ahm .. Hä? - Explizites setzen der MySQL-Verbindung auf UTF-8 bei jedem DB-Connect. hm? |
Autor: | Welv [ Di 30 Jun, 2009 08:31 ] |
Betreff des Beitrags: | Re: Lotgd in utf-8 |
nix? |
Autor: | Eliwood [ Di 30 Jun, 2009 10:36 ] |
Betreff des Beitrags: | Re: Lotgd in utf-8 |
mbstring überladen Wie sendet man mit PHP HTTP-Header Setzen der MySQL-Verbindung auf utf-8: $this->bbcode_second_pass_code('', 'SET CHARACTER SET utf8') Edit: Auf Windows ist das funktionieren des Überladens in einer .htaccess nicht sicher. Es ist hier besser, wenn man in der php.ini das überladen aktiviert. |
Autor: | Welv [ Di 30 Jun, 2009 14:49 ] |
Betreff des Beitrags: | Re: Lotgd in utf-8 |
Vielen Dank Eliwood. Nur noch n paar Fragen um sicher zu gehen ^^ Also in der php.ini ;mbstring.func_overload auf 7 stellen und in jeder Datei die Funktionen (mail(),substr(),ereg(), etc...) mit ihren mb_ Varianten ersetzen? Und existiert schon ein header() den ich nur nicht finde und umschreiben muss oder kann ich die Funktion einfach in den page_footer() über das echo hauen? |
Autor: | Eliwood [ Di 30 Jun, 2009 23:51 ] |
Betreff des Beitrags: | Re: Lotgd in utf-8 |
Nein - das Überladen verhindert eben, dass du nicht ersetzen musst. ![]() Wenn das Überladen aber nicht funktioniert (warum auch immer), musst du die Funktionen ersetzen. Um zu testen, obs klappt, kannst du in einer (UTF-8-Kodierten) Testdatei strlen von ä ausgeben. Vor dem überladen müsste die Funktion 2 zurückgeben - danach aber nur noch 1. Der Header.. Nein, LoGD sendet in der Standard-Version eigentlich keinen Content-Header. Wenn doch, kannst du header als zweiten parameter true übergeben, damit er den vorherigen überschreibt, oder du suchst ihn einfach. Vor echo reicht eigentlich. |
Autor: | Welv [ Mi 01 Jul, 2009 08:43 ] |
Betreff des Beitrags: | Re: Lotgd in utf-8 |
Irgendwie mag mich mein XAMPP nicht... Hab sowol php.ini als auch php5.ini geändert, habs mit und ohne mb_ vor strlen() versucht, hab dazwischen immer wieder Apache und mysql runter und hochgefahren, hab auch noch alle mbstring funktonen in den ini Datein aktiviert... $this->bbcode_second_pass_code('', ' [mbstring] ; language for internal character representation. ;mbstring.language = Japanese mbstring.language = German ; internal/script encoding. ; Some encoding cannot work as internal encoding. ; (e.g. SJIS, BIG5, ISO-2022-*) ;mbstring.internal_encoding = EUC-JP mbstring.internal_encoding = UTF-8 ; http input encoding. ;mbstring.http_input = auto mbstring.http_input = auto ; http output encoding. mb_output_handler must be ; registered as output buffer to function ;mbstring.http_output = SJIS ; enable automatic encoding translation according to ; mbstring.internal_encoding setting. Input chars are ; converted to internal encoding by setting this to On. ; Note: Do _not_ use automatic encoding translation for ; portable libs/applications. ;mbstring.encoding_translation = Off mbstring.encoding_translation = On ; automatic encoding detection order. ; auto means ;mbstring.detect_order = auto mbstring.detect_order = auto ; substitute_character used when character cannot be converted ; one from another ;mbstring.substitute_character = none; mbstring.substitute_character = none; ; overload(replace) single byte functions by mbstring functions. ; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(), ; etc. Possible values are 0,1,2,4 or combination of them. ; For example, 7 for overload everything. ; 0: No overload ; 1: Overload mail() function ; 2: Overload str*() functions ; 4: Overload ereg*() functions mbstring.func_overload = 7 ') aber egal was ich ändere, eines ändert sicht nicht ... ä = 2 -.- |
Autor: | Eliwood [ Mi 01 Jul, 2009 08:46 ] |
Betreff des Beitrags: | Re: Lotgd in utf-8 |
Auch mb_strlen('ä'); wird zu 2? Wenn ja ist das *sehr* merkwürdig. |
Autor: | Welv [ Mi 01 Jul, 2009 09:06 ] |
Betreff des Beitrags: | Re: Lotgd in utf-8 |
Jo, ändert sich nix. Hab nu auch den PC neu gestartet, bleibt allerdings immernoch 2. Scheinen änderungen eigentlich mit phpinfo() auf? Denn dort sind die ganzen mb Funktionen immernoch auf Standartwerten und aus. $this->bbcode_second_pass_code('', ' mbstringMultibyte Support enabled Multibyte string engine libmbfl Multibyte (japanese) regex support enabled Multibyte regex (oniguruma) version 4.4.4 Multibyte regex (oniguruma) backtrack check On mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1. Directive Local Value Master Value mbstring.detect_order no value no value mbstring.encoding_translation Off Off mbstring.func_overload 0 0 mbstring.http_input pass pass mbstring.http_output pass pass mbstring.internal_encoding no value no value mbstring.language neutral neutral mbstring.strict_detection Off Off mbstring.substitute_character no value no value ') edit. Vielleicht liegt es an meinem XAMPP oder ich hab doch was falsch gemacht. Ich frag mal bei Apache friends nach. edit. Hab die falsche php.ini bearbeitet und mbstring.internal_encoding = UTF-8 musste auch noch rein. Jetzt funzt es. Danke edit. Da PhpMyAdmin mit aktivierten mbstring nicht funzt, hab ich alle entsprechenden stringfunktionen durch eigene ersetzt die, je nach einstellung, ggf die stringfunktionen durch ihre mb varianten ersetzt. |
Seite 1 von 1 | Alle Zeiten sind UTC + 1 Stunde |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |