anpera.net
https://anpera.homeip.net/phpbb3/

Probleme mit Sonderzeichen in den Farbcodes unter PHP 7
https://anpera.homeip.net/phpbb3/viewtopic.php?f=25&t=5578
Seite 1 von 2

Autor:  Waldmonster [ So 10 Dez, 2017 16:01 ]
Betreff des Beitrags:  Probleme mit Sonderzeichen in den Farbcodes unter PHP 7

Hallöchen! :)

Da mein Hoster nur noch PHP 7.0 anbietet, musste ich auch erstmal die Scripts upgraden.
Nun hab ich aber hauptsächlich das Problem, dass in den Farbcodes die Sonderzeichen wohl korrekt in der DB gespeichert, aber falsch angezeigt werden und somit unbrauchbar sind.
Die Scripts sind auf UTF-8 ohne BOM kodiert, da UTF-8 allein zicken macht.
Ich weiß nun nicht, ob im Color-Skript noch Änderungen gemacht werden müssen, damit es unter PHP 7.0 läuft. Mysql habe ich bereits auf Mysqli geändert. Ansonsten stehe ich auf dem Schlauch.
In der Datenbank (MariaDB) wird statt Â, î und co nur à angezeigt. Das lässt sich wohl manuell ändern, wird aber wiederum nicht korrekt in der Grotte angezeigt. Stattdessen prankt an der Stelle dieses wunderschöne Zeichen, von dem ich hoffte, es lange nicht mehr sehen zu müssen: �
Wüsste da jemand einen Rat? :/

Hier den Link zur Source, auch wenn ich an dem Script selber nicht viel geändert habe: http://alresia.de/source.php?url=/colors.php#source

Dateianhänge:
farbcodesDB2.png [80.1 KIB]
Noch nie heruntergeladen
farbcodesDB1.png
farbcodesDB1.png [ 69.84 KIB | 83083-mal betrachtet ]
sonderzeichenfarbcodes1.png
sonderzeichenfarbcodes1.png [ 13.55 KIB | 83083-mal betrachtet ]

Autor:  Taikun14 [ Mo 11 Dez, 2017 16:25 ]
Betreff des Beitrags:  Re: Probleme mit Sonderzeichen in den Farbcodes unter PHP 7

Du kannst versuchen mysqli_query("SET NAMES 'utf8'"); in deine common.php nach dem dbconnect zu schreiben.

Bei mir hat damals geholfen die Tabelle einmal zu löschen und neu hochzuladen.

Autor:  Waldmonster [ Mo 11 Dez, 2017 22:10 ]
Betreff des Beitrags:  Re: Probleme mit Sonderzeichen in den Farbcodes unter PHP 7

Ändert leider nichts an der Problematik. :/

Autor:  Shaddar [ Mi 13 Dez, 2017 21:34 ]
Betreff des Beitrags:  Re: Probleme mit Sonderzeichen in den Farbcodes unter PHP 7

Die PHP-Dateien mit UTF-8 zu kodieren reicht alleine leider nicht aus. Hast du denn eine komplette Umstellung vollzogen ? Heißt, auch die notwendigen PHP Einstellungen getroffen, auf die UTF-8 Funktionen umgestellt, dem Browser und der Datenbank gesagt das die Verbindung nun mittels UTF-8 abläuft und die DB auf UTF-8 konvertiert ?

Autor:  Waldmonster [ Do 14 Dez, 2017 17:13 ]
Betreff des Beitrags:  Re: Probleme mit Sonderzeichen in den Farbcodes unter PHP 7

DB läuft mit der UTF8-Kollation und mittlerweile ist jedes Script auch mit dem Header versehen, nachdem ich gelesen hab, dass bei der UTF8 ohne Bom-Kodierung da gerne mal Mist läuft, wenn der fehlt.
Aber egal was ich alles eingestellt hab, will es nicht.
Gestern habe ich dann noch entdeckt, dass man in der php.ini durch die mbstring.func_overload = 7 Einstellung die strings überladen kann, damit die Sonderzeichen mehr Platz zum entfalten erhalten.
Sagen wirs so... das bringt mich dem ganzen ein wenig näher, reißt es aber noch nicht raus. :/
Ich hab nachwievor die Fragezeichen statt einem Ü, was ich komisch find, weil in der reinen Textausgabe werden Umlaute und Co korrekt angezeigt.
Wenn ich die Zeichen manuell in der DB eingebe, werden die dort auch richtig angezeigt. Nur eben auf dem Server in der Tabelle nicht.

Ich hab nochmal einen Screenshot vom derzeitigen Stand gemacht. Was halt auffällt ist, dass die Hex-Codes bei den Sonderzeichen halbwegs angezeigt werden. :/

Bild

Autor:  Shaddar [ Do 14 Dez, 2017 19:48 ]
Betreff des Beitrags:  Re: Probleme mit Sonderzeichen in den Farbcodes unter PHP 7

Beim durchgucken deiner common.php sind mir zwei Sachen aufgefallen:

1. Ganz unten an den Titeln sieht es für mich so aus, als wäre bei der Konvertierung irgendwas falsch gelaufen
$this->bbcode_second_pass_code('', '$titles = array(
0=>array("Bauernjunge","Bauernm�dchen"),
1=>array("Knecht", "Magd"),
2=>array("Bauer", "B�uerin"),
3=>array("Grossbauer", "Grossb�uerin"),
4=>array("Spurenleser","Spurenleserin"),
5=>array("J�ger","J�gerin"),
6=>array("Gutshofverwalter","Gutshofverwalterin"),
7=>array("Gutsherr","Gutsherrin"),
8=>array("B�rger","B�rgerin"),
9=>array("Gladiator","Gladiatorin"),
10=>array("Legion�r","Legion�rin"),
11=>array("Centurio","Centurioness"),
12=>array("Meister","Meisterin"),
13=>array("Ratsherr", "Ratsfrau"),
14=>array("Verwalter","Verwalterin"),
15=>array("B�rgermeister", "B�rgermeisterin"),
16=>array("Major", "Major"),
17=>array("General", "General"),
18=>array("Edler", "Edle"),
19=>array("Ritter", "Ritterin"),
20=>array("Junker", "Junkerin"),
21=>array("Freiherr", "Freifrau"),
22=>array("Baron", "Baronin"),
23=>array("F�rst", "F�rstin"),
24=>array("Grossf�rst", "Grossf�rstin"),
25=>array("Herzog", "Herzogin"),
26=>array("Graf", "Gr�fin"),
27=>array("Prinz", "Prinzessin"),
28=>array("Kronprinz", "Kronprinzessin"),
29=>array("K�nig", "K�nigin"),
30=>array("Kaiser", "Kaiserin"),
31=>array("Drachent�ter","Drachent�terin"),
32=>array("Bischof","Bisch�fin"),
33=>array("Papst", "P�pstin"),
34=>array("Seele", "Seele"),
35=>array("Seliger", "Selige"),
36=>array("Heiliger", "Heilige"),
37=>array("Engel", "Engel"),
38=>array("Erzengel", "Erzengel"),
39=>array("Kraft", "Kraft"),
40=>array("Macht", "Macht"),
41=>array("Herrschaft", "Herrschaft"),
42=>array("Thron", "Thron"),
43=>array("Seraphim", "Seraphim"),
44=>array("Cherubim", "Cherubim"),
45=>array("Titan","Titanin"),
46=>array("Erztitan","Erztitanin"),
47=>array("Halbgott", "Halbg�ttin"),
48=>array("Untergott","Unterg�ttin")
);')

2. Vermisse ich ein mysqli.set-charset nach dem Herstellen der Verbindung zur DB.
Ich weiß natürlich welche config deine DB hat, aber es ist noch immer sehr häufig anzutreffen das diese im Standard nicht mit utf8 laufen und dies somit für die Verbindung immer angegeben werden muss, damit die Daten auch korrekt kodiert werden.

Autor:  Waldmonster [ Do 14 Dez, 2017 20:55 ]
Betreff des Beitrags:  Re: Probleme mit Sonderzeichen in den Farbcodes unter PHP 7

Also a) alles per Hand ändern und b) mysqli.set-charset wohin einfügen? In die connect.php?

Autor:  Shaddar [ Do 14 Dez, 2017 22:31 ]
Betreff des Beitrags:  Re: Probleme mit Sonderzeichen in den Farbcodes unter PHP 7

Ich würde auf jeden Fall mal kontrollieren ob das nur für mich in der Source so aussieht oder auch bei dir aufm PC und falls ja dann natürlich händisch anpassen.

Habe gesehen, das du versucht hast den Tipp Taikun14 umzusetzen, aber leider an der falschen Stelle:
$this->bbcode_second_pass_code('', 'if (file_exists("dbconnect.php")){
require_once "dbconnect.php";
mysqli_query("SET NAMES 'utf8' COLLATE 'utf8_general_ci' ");
}else{
echo "Du must die benötigten Informationen in die Datei \"dbconnect.php.dist\" eintragen und sie unter dem Namen \"dbconnect.php\" speichern.".
exit();
}')

Der MySQL-Query wird an dieser Stelle gar nicht funktionieren, da du a) noch gar keine Verbindung zur DB hergestellt hast und b) die Methode beim prozeduralen Aufruf zwei Parameter erwartet, wobei der erste den Link zur DB-Verbindung beinhalten muss. Diese Zeile kannst du also getrost wieder entfernen.

So dann solltest du den Aufruf bezüglich dem Setzen des Zeichensatzes zwischen diese beiden Zeilen packen:
$this->bbcode_second_pass_code('', '$link = db_pconnect($DB_HOST, $DB_USER, $DB_PASS) or die (db_error($link));
db_select_db($link, $DB_NAME) or die (db_error($link));')

Entweder du machst es mittels den PHP Funktionen direkt, wobei ich aber dafür plädieren würde dir dafür auch eine Wrapper Funktion in der dbwrapper.php anzulegen und diese dann zu verwenden, zwecks Einheitlichkeit.

$this->bbcode_second_pass_code('', 'mysqli_set_charset ($link , "utf8");
// bzw.
db_set_charset ("utf8"); // muss zuerst in der dbwrapper.php definiert werden')

Autor:  Waldmonster [ Do 14 Dez, 2017 23:18 ]
Betreff des Beitrags:  Re: Probleme mit Sonderzeichen in den Farbcodes unter PHP 7

Oh mein Gott, das wars...
Vielen lieben Dank!! Ich könnt dich echt knutschen!

Autor:  Shaddar [ Fr 15 Dez, 2017 07:23 ]
Betreff des Beitrags:  Re: Probleme mit Sonderzeichen in den Farbcodes unter PHP 7

Keine Ursache, freut mich wenn ich helfen konnte ;-)

Autor:  Eliwood [ Mo 25 Dez, 2017 14:54 ]
Betreff des Beitrags:  Re: Probleme mit Sonderzeichen in den Farbcodes unter PHP 7

Kleine Anmerkung: Idealerweise nimmt man nicht utf8 in mysql, sondern utf8mb4. mysql-utf8 unterstützt nur bis zu 3 bytes pro zeichen, während richtiges utf8 bis zu 4 benötigen kann.

Autor:  Waldmonster [ Mi 27 Dez, 2017 21:19 ]
Betreff des Beitrags:  Re: Probleme mit Sonderzeichen in den Farbcodes unter PHP 7

Ui, danke! Wird sofort geändert :)



EDIT:
Jetzt hab ich nur (bereits vor der Änderung von UTF8 auf UTF8mb4) das Problem, dass in der Fußzeile solche kleinen Codeschnipsel angezeigt werden.
Dies liegt wohl an dem mbstring.func_overload = 7 in der php.ini. Wenn ich den Befehl lösche, ist das Problem zumindest weg.
Das Problem ist aber, dass die Sonderzeichen dann als Farbcodes nicht mehr verwendbar sind. Ich kann sie dann nicht via ` benutzen.
Sonst hab ich an der php.ini nichts geändert. Sämtliche Einstellungen sind vom Hoster voreingestellt.
Muss ich dort noch zusätzliche Änderungen hinzufügen?


Bild

Autor:  Eliwood [ Di 02 Jan, 2018 13:40 ]
Betreff des Beitrags:  Re: Probleme mit Sonderzeichen in den Farbcodes unter PHP 7

Das ist ein Schuss ins dunkle: Die page_footer-Funktion hat die folgende Zeile:

$this->bbcode_second_pass_code('', 'echo compress_out($output);')

Könntest du die mit

$this->bbcode_second_pass_code('', 'echo $output;')

ersetzen und schauen, ob das Problem gelöst wird?

Autor:  Waldmonster [ Di 02 Jan, 2018 23:52 ]
Betreff des Beitrags:  Re: Probleme mit Sonderzeichen in den Farbcodes unter PHP 7

Ich hab nun ein paar mal zwischen den Seiten rumgeswitcht. Bislang sind keine Codeschnipsel wieder aufgeploppt. :)
Dankeschön! (Ich schrei einfach, falls es doch wieder erscheinen sollte.... *hust*)

Autor:  Waldmonster [ So 17 Jun, 2018 15:10 ]
Betreff des Beitrags:  Re: Probleme mit Sonderzeichen in den Farbcodes unter PHP 7

Gut, derselbe Fehler ist nicht erschienen, dafür nun zwei andere, die ich jetzt erst nach Eröffnung des Servers bemerkt habe.
Und zwar funktionieren die Farbcodes wie `é `ô und Co wohl im Chat-Bereich, beim Page-Header werden aber die berüchtigten Fragezeichen ausgeworfen.
Ebenso ist das Einfärben des Namens über die Jägerhütte nicht möglich.

Ich hab mal folgende Screenshots gemacht, damit man direkt sieht, was das Problem ist:
Screenshot 1
Screenshot 2

Mit den "normalen" Farbcodes funktioniert das Einfärben wunderbar und alles wird auch korrekt angezeigt, nur bei den Sonderzeichen eben nicht. Ich hab auch schon utf8_encode ausprobiert, aber nichts wollte recht helfen. ô_o
Und wie gesagt, im Chat und auch bei den eingefärbten Texten (Bei den verschiedenen Plätzen, Bios...) lassen sich die Sonderzeichen problemlos anwenden. Ich bin mittlerweile also ziemlich ratlos. :bash:


In der Source habe ich die Common.php einmal aufgemacht, so dass man ein Auge drauf schmeißen kann:
Common-Source
Colors-Source

Autor:  Taikun14 [ Fr 22 Jun, 2018 00:42 ]
Betreff des Beitrags:  Re: Probleme mit Sonderzeichen in den Farbcodes unter PHP 7

lodge.php ( jägerhütte )

HTMLEntities mit HTMLSpecialChars ersetzen. Dadurch müsste das Einfärben dort möglich sein, auch mit Sonderzeichen ( keine 100%ige Garantie, aber ein Versuch wert! ).

Alternativ muss die Jägerhütte eventuell modifiziert werden. Da man deine nicht einsehen kann, kann ich dir nicht sagen ob's da im Code generell 'nen Problem gibt.

page_header

wird bei mir korrekt angezeigt. Evtl. mal den Browsercache + Cookies löschen oder einen alternativen Browser verwenden.

Autor:  Waldmonster [ Fr 22 Jun, 2018 14:52 ]
Betreff des Beitrags:  Re: Probleme mit Sonderzeichen in den Farbcodes unter PHP 7

Die Änderung auf HTMLSpecialChars hatte ich bereits vorgenommen - ändert aber leider nichts.
Ich hab die Lodge nun aber auch in der Source freigegeben. Hier ist sie. :D

Das Löschen von Cookies und Co bringen außerdem nichts. Auch bei anderen Browsern und bei anderen Usern werden die Sonderzeichen so angezeigt.

Autor:  Taikun14 [ Fr 22 Jun, 2018 19:43 ]
Betreff des Beitrags:  Re: Probleme mit Sonderzeichen in den Farbcodes unter PHP 7

Schnellste Lösung für die Lodge:

Hör dich mal bei Admins auf noch aktiven Servern um ob du deren Jägerhütte verwenden darfst. Ich meine hätte damals da auch was modifiziert wegen dem ganzen Sonderkrams, aber ich bin mittlerweile so raus, dass ich mir nicht mehr sicher bin und es auch nicht auf Anhieb hinbekommen würde.

Zum 2.Punkt kann ich dir nur sagen: bei mir wird im Browser alles korrekt angezeigt, wie vorher schon erwähnt.

Autor:  Waldmonster [ Sa 23 Jun, 2018 13:33 ]
Betreff des Beitrags:  Re: Probleme mit Sonderzeichen in den Farbcodes unter PHP 7

Werd ich machen. :)

Und wird dir auch bei den Sonderzeichen alles korrekt angezeigt? O_o
Wie gesagt, bei meinen Leutchen wird das genau wie im Screenshot dargestellt, weshalb ich nach langer Tüftelei vermute, dass es schlicht mit den Farbcodes zusammenhängt. :/ Ganz komisch.

Autor:  Eliwood [ Mo 25 Jun, 2018 13:48 ]
Betreff des Beitrags:  Re: Probleme mit Sonderzeichen in den Farbcodes unter PHP 7

Dass das mit der Lodge nicht korrekt angezeigt wird, liegt mehr am Quelltext der lodge als an was anderem. Das ist ersichtlich daran, dass der Name das erste mal korrekt angezeigt wird, das zweite mal aber nicht. Der grammatische Fehler lässt mich vermuten, dass das keine originale Änderung ist:

$this->bbcode_second_pass_code('', 'output("`n`nDeine Name bisher ist: ");
$output.=$regname;
output("`0, und wird so aussehen $regname"); ')

Für "Deine Name bisher ist" ist "wird so aussehen" wird beidemale die gleiche Variable verwendet - kein Wunder sieht das gleich aus. Beim über-die-Source-fliegen scheint mir, dass $regname der bisherige Name sein soll (user.name minus user.title minus das Leerzeichen dazwischen minus alle schliessenden Tags (`0), damit die Vorschau passt.

Was funktioniert denn sonst nicht beim Einfärben? Ausser die unnötige Änderung für die Vorschau, die sowieso schon da war? Wird die komplette Änderung nicht übernommen?

PS: Da fällt mir grad noch ne Möglichkeit auf, die "Maximale-Farben"-Prüfung elegant zu umgehen... Die Code-Basis ist wirklich uralt.

Seite 1 von 2 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/