[Startthread] – Fehler in der Liga?

Das Problem ist, dass neuere PHP-Versionen intern mit UTF-8 arbeiten und nicht mehr mit Latin1, wie Clonk es tut.

Ich bin jetzt einen halben Schritt weiter - Spieler- und Szenarionamen mit Umlauten und anderen nicht-ASCII-Zeichen verschwinden jetzt nicht mehr komplett, aber die entsprechenden Zeichen werden durch ein ? ersetzt.

Ich hab mich nochmal in PHP damit beschäftigt, meine Implementierung war doch oft kaputt. Anscheinend wird das ganze manchmal in UTF-8 kodiert (dann bis zu 4 Bytes bzw. Oktetttripel) und manchmal fällt das auf die Latin1-Codierung zurück. Hatte da ein sehr seltsames Beispiel mit einem Testplayer mit vielen Umlauten, bei denen der Spielername völlig anders als der Dateiname kodiert wurde. Wenn ich eine zuverlässige Lösung finde kann ich das hier reinstellen (wundert mich nur, dass der "offizielle" Masterserver das nicht kann, auf Clonk.de ging das meistens).

Zum Nachvollziehen: Für latin1 gibt es chr(), für UTF-8 hilft mb_convert_encoding().

Vielleicht wäre der beste Ansatz, intern komplett mit UTF-8 zu arbeiten und nur bei Ein- und Ausgabe mit CR Latin1-Konvertierung durchzuführen. Das macht auch die Interaktion mit dem Webinterface einfacher.

Gerade gesehen:
    \303?\356?\356?\373? ?\352?  07.06.14 - 17:08   0:07:44  Flammable,FUNny Fantom
Ich hab's aber nur in der Liga und nicht in Clonk gesehen.

Außerdem sind alle Spieler des laufende Liga-Spiels rot. Absicht?

>Das Problem ist, dass neuere PHP-Versionen intern mit UTF-8 arbeiten und nicht mehr mit Latin1, wie Clonk es tut.


Ich bekomm ja immer ne Krise, wenn PHP mir mal Dateien auflisten soll und die Datei nen Umlaut hat…

>Außerdem sind alle Spieler des laufende Liga-Spiels rot. Absicht?


Das sind links.

Und ich hab heute auch eine Sonderzeichenrunde gesehn, hab dann schnell CR gestartet und gesehn, dass der name in etwa "âÌäêöùí" (nur doppelt) so lang war.

>Das sind links.


Ich weiß, hätte ich noch erwähnen müssen. >.<

Weil die anderen Liga-Spieler sind ja auch blau bzw. grau. Warum die laufenden rot sind.

Bei einem fertigen Spiel gibt blau/grau ja gewonnen/verloren an. Bei einem laufenden Spiel gibt es diese Information nicht.

Zum Thema Fehler in der (alten Melee-)Liga:

Kann es sein, dass immer noch 20 Punkte pro Woche abgezogen werden? Denn ich bin mir sicher, dass nicht nur 21 Clonker am Ende der Liga Punkte hatten.

Gilt vermutlich auch für die Magie-Liga.

Edit: Ja die Punkte werden in beiden Ligen abgezogen, hab meine momentanen Punkte mit denen verglichen, die ich in meinem letzten Spiel hatte.

Ist das mit der Liga jetzt fixed?
Hab gestern gegen 21:25 Uhr auf die Liga-Seite geschaut und folgende Spiele festgehalten:

Hills of Gore (Remaked)  24.06.14 - 21:14   0:00:00  Jalava vs. Joshua vs. Shadow
GIDL_Kanibal  24.06.14 - 21:11   0:00:53  ~[ÒvÓ]~Nachtuhle scaba vs. Marlo
Blobby Volley! v1.02  24.06.14 - 21:11   0:03:14  Nyrem vs. [RW]Slayer
[…]
Wound-Valley King  24.06.14 - 20:54   0:18:34  Jalava,Glyndis vs. Shadow,[Empire] Stormy
GIDL_S2DynMap v1.1  24.06.14 - 20:52   0:13:21  ~[?v?]~Nachtuhle scaba vs. ala


Aber wenn ich jetzt wieder auf die Liga-Seite gehe, dann sind die Zeichen wieder fehlend.
GIDL_Kanibal  24.06.14 - 21:11   0:00:53  ~[?v?]~Nachtuhle scaba vs. Marlo
Blobby Volley! v1.02  24.06.14 - 21:11   0:05:54  Nyrem vs. [RW]Slayer


Weiß nicht ganz so recht, was da los ist aber evtl. ist das der entscheidende Hinweis, damit so eine Lösung gefunden werden kann. :slight_smile:

https://clonkspot.org/forum/topic_show.pl?pid=4109#pid4109

Habe diesen Post schon gelesen gehabt (und auch darauf Stellung bezogen. hust)
Ich meinte, weil es vorrühergehend korrekt angezeigt wurde.

Achso. Das ist, weil die kaputten Zeichen zunächst korrekt aus der Datenbank gelesen werden. Die Liga cacht aber das HTML der Tabelleneinträge in einer getrennten Datenbanktabelle. Beim Speichern da rein gehen die Umlaute und Sonderzeichen verloren und werden durch ? ersetzt. Dadurch erscheint es ein Mal korrekt, aber bei folgenden Aufrufen nicht mehr.

Der beste Fix an der Stelle wird wohl sein, dieses Caching zu deaktivieren. Ich denke, dass die Datenbank hier das recht gut wegstecken wird (Shared Hosting sei Dank oder so ;)).

Äh ja…  ich wollt ja nur mal anmerken das Google-Chrome-Canary 64 Bit Version die Liga-Seite nicht aufrufen kann…
Die Webseite bleibt einfach weiß
zum Glück habe ich auch IE (=müll:grin:)…

Das ist dann wohl ein Bug in Chrome. Verwendest du die Entwicklerversion zum normalen Surfen?

äh ja… :grin:

Ist jetzt behoben.

\o/
Wie habt ihr das geschafft? :smiley:

Das HTML wird nicht mehr in einer MySQL-Relation gecacht, sondern in Redis. Dort werden Strings generell ohne jegliche Konvertierung gespeichert, sodass nichts kaputt gehen kann.

Ich habe noch mal ein bisschen geschaut und habe das:

gefunden.
Ich hoffe, dass das euch weiterhilft.

Das hat nichts mit Chrome zu tun und müsste nach dem Neuladen weggehen.