Zitat von Wasser_Wanderer
Beitrag anzeigen
Worte mit Umlauten werden nicht angezeigt
Einklappen
X
-
-
Die drei anderen Flags machen keine lebenswichtigen Sachen. ENT_HTML5 kodiert das einfache Anführungszeichen als ' statt als numerische Entität (sollte Browsern und so ziemlich egal sein), die beiden anderen Flags bestimmen, was die Funktion macht, wenn die Eingabe falsch kodierte (UTF-8-)Bytes enthält. Das sollte normalerweise natürlich auch nicht auftreten. Es ist aber ab PHP 5.4 denoch ganz praktisch, die Flags zu setzen, weil es das Standardverhalten von htmlspecialchars ist, bei solchen Fehlern ansonsten einen leeren String zu liefern.
Also, bevor du die Flags in Anführungszeichen setzt (was Unsinn ist, auch wenn PHP das mit falscher Interpretation der Sachlage vorschlägt), lass sie einfach weg. ENT_QUOTES aber dennoch setzen.
Ansonsten siehe natürlich hellbringer.
Kommentar
-
Zitat von mermshaus Beitrag anzeigenwas die Funktion macht, wenn die Eingabe falsch kodierte (UTF-8-)Bytes enthält. Das sollte normalerweise natürlich auch nicht auftreten. Es ist aber ab PHP 5.4 denoch ganz praktisch, die Flags zu setzen, weil es das Standardverhalten von htmlspecialchars ist, bei solchen Fehlern ansonsten einen leeren String zu liefern.
@Wasser_Wanderer: Füge doch testweise ENT_IGNORE zum htmspecialchars()-Aufruf hinzu, also so:
PHP-Code:function codiere($s) {
return htmlspecialchars($s, ENT_QUOTES | ENT_IGNORE, 'UTF-8');
}
Zitat von Wasser_Wanderer Beitrag anzeigenhier die Fehlermeldungen:
PHP-Code:Notice: Use of undefined constant ENT_HTML5 - assumed 'ENT_HTML5' in \index.php on line 54...
Zitat von Wasser_Wanderer Beitrag anzeigenAuf dem Server läuft:
PHP Version 5.5.9-1ubuntu4.9
Zitat von Wasser_Wanderer Beitrag anzeigen1. Das Problem tauchte aufeinmal auf (ca. 1 Monat)
2. Es wurde an den Scripten nichts verändert
Zitat von Wasser_Wanderer Beitrag anzeigenPHP-Code:htmlspecialchars($s, ENT_QUOTES | ENT_HTML5 | ENT_DISALLOWED | ENT_SUBSTITUTE, 'UTF-8');
Zitat von Wasser_Wanderer Beitrag anzeigenIch musste ja nur die ENT_HTML5, ENT_DISALLOWED und ENT_SUBSTITUTE in Single-Quotes setzen
Das kannst du selbst nachprüfen:
PHP-Code:// int(187) in aktuellen PHP-Versionen
// int(3) in PHP vor 5.4.0 (+ Fehlermeldungen)
var_dump(ENT_QUOTES | ENT_HTML5 | ENT_DISALLOWED | ENT_SUBSTITUTE);
// int(3)
var_dump(ENT_QUOTES | 'ENT_HTML5' | 'ENT_DISALLOWED' | 'ENT_SUBSTITUTE');
// int(3)
var_dump(ENT_QUOTES);
// int(3)
var_dump(3);
PHP-Code:htmlspecialchars($cdata, ENT_QUOTES)
Ich glaube, du sollstest vor weiteren Ratespielchen und Reparaturversuchen erstmal grundhaft feststellen, worauf du aufbaust.
Außerdem für später:
PHP-Code:<td colspan="3\" bgcolor=\"".$ergtab."\" height=\"25\"><b style=\"color:".$ergtab2."\">".codierung($spieler)."</b></td>
Ein Vorschlag für mehr Übersichtlichkeit:
PHP-Code:printf(
'<td colspan="3" bgcolor="%s" height="25"><b style="color:%s">%s</b></td>',
codierung($ergtab),
codierung($ergtab2),
codierung($spieler)
);
Kommentar
-
@mermshaus:
Die PHP-Version die ich angegeben habe, ist genau die, was in der PHP-Info steht:
PHP Version 5.5.9-1ubuntu4.9
System Linux powerc110.galaxy-gmbh-service.de 3.13.0-042stab108.2 #1 SMP Tue May 12 18:07:50 MSK 2015 x86_64 Build Date Apr 17 2015 11:41:17 ------------------------------------------------------
Und mein beschriebenes Problem ist mir erst vor ca 1 Monat aufgefallen.
Zu dem Zeitpunkt ca 19.06.2015 wurden alle Sonderzeichen/Umlaute absolut korrekt dargestellt.
Welche PHP-Version davor auf dem Server lief, das ist mir nicht bekannt.
Sicher sind da in der Programmierung handwerkliche Fehler drinne. Das ist mir klar.
Dennoch danke für Eure Hilfestellungen.
Gruss WW
Kommentar
-
Zitat von Wasser_Wanderer Beitrag anzeigenDie PHP-Version die ich angegeben habe, ist genau die, was in der PHP-Info steht:
PHP Version 5.5.9-1ubuntu4.9
Bau mal im selben(!) Script, in dem du auch das htmlspecialchars bzw. deine Funktion codierung aufrust,
PHP-Code:var_dump(phpversion());
I don't believe in rebirth. Actually, I never did in my whole lives.
Kommentar
-
Zitat von Wasser_Wanderer Beitrag anzeigenAusgabe: string(16) "5.5.9-1ubuntu4.9"
Local auf dem Windows-PC läuft: 5.3.8 Version
Zitat von Wasser_Wanderer Beitrag anzeigenUnd auf dem lokalen Server tritt das Problem nicht auf.
PHP-Code:function codierung($s)
{
return htmlspecialchars($s, ENT_QUOTES | ENT_IGNORE, 'cp1252');
}
Im Client kommt dann zwar vermutlich immer noch UTF-8+Single-Byte-Mischmasch an, aber an so etwas sind Webbrowser ja gewöhnt.Zuletzt geändert von fireweasel; 24.07.2015, 17:00.
Kommentar
-
Zitat von fireweasel Beitrag anzeigenAlso stammen die Fehlermeldungen von der (lokalen) 5.3.8-Version, aber die "verschluckten" Textteile gibts nur auf dem Server mit 5.5.9?
Zitat von fireweaselIch tendiere mehr und mehr dazu, dir einfach 'cp1252' als Parameter für die Zeichenkodierung zu empfehlen:
PHP-Code:function codierung($s)
{
return htmlspecialchars($s, ENT_QUOTES | ENT_IGNORE, 'cp1252');
}
Damit werden die Wörter mit Umlauten richtig und vollständig angezeigt.
Bei UTF-8 werden die Umlaute selbst falsch dargestellt.
Gruss WW
Kommentar
Kommentar