Zufallstext

Dieser Bereich dient dazu, neue Features zu diskutieren und für die Entwicklung zu dokumentieren. // This area is dedicated to new features including proposals and documentation.
Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Zufallstext

Beitrag von Screeze » 14.03.2011, 21:20:03

Vermutlich ist das § problem einem zeichensatzfehler geschuldet - welchen zeichensatz haben deine Dateien, welchen die eingaben und welche die datenbank?

Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Re: Zufallstext

Beitrag von dave » 14.03.2011, 21:24:20

Datenbank und Dateien haben UTF-8.

Die Eingaben verwende ich ohne bestimmte Codierung, habe aber auch schon UTF-8 verwendet. Jedoch kam dabei trotzdem nur ein Fragezeichen anstatt des Paragraphenzeichen.

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Zufallstext

Beitrag von Screeze » 14.03.2011, 21:44:49

Mit welchem content-type sendet der server die dateien an den client?

Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Re: Zufallstext

Beitrag von dave » 14.03.2011, 21:57:37

Meinst du den Content-Type im Head meines HTML? Der steht ebenfalls auf UTF-8.
Solltest du das nicht meinen, wüsste ich gar nicht, wo ich noch etwas anpassen könnte.

Ich muss dazu sagen, dass die Ausgabe noch vor dem öffnenden <HTML> Tag statt findet. Zum Probieren, mache im Controller ein einfaches echo ''; ;) Nur: Mit äöü habe ich auch teilweise (!) Probleme, bin das aber der Einfachheit erstmal durch &uuml; usw. umgangen.

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Zufallstext

Beitrag von Screeze » 14.03.2011, 22:25:14

das html zeug wird kaum verwendet glaub ich, besser in der index.php senden:

Code: Alles auswählen

header("Content-Type: text/html; charset=utf-8"); 

Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Re: Zufallstext

Beitrag von dave » 14.03.2011, 22:34:52

Ok, angepasst.

Aber, was ist denn das für ein Käse?

Im Quelltext steht es als gant normales § Paragraphenzeichen:

Code: Alles auswählen

);§(§$$§/§
Aber auf der Seite dann dargestellt wird es nichts:

Code: Alles auswählen

);�(�$$�/�

Das ist echt total willkürlich: Ich lasse jetzt mal nur § ausgeben und das kommt dabei raus:
Im Quelltext:

Code: Alles auswählen

§Â§ÂÂÂ
Und auf der Seite dargestellt:

Code: Alles auswählen

§���§���
Was auffällt: Es sollen 10 Zeichen ausgegeben werden! Im Quelltext klappt das, aber 2 Zeichen werden als "Nichts" übersetzt, sodass nur 8 Zeichen dargestellt werden. Also ich sage einfach mal, dass der Manager im Moment Sonderzeichen nur gernigfügig, wohl eher gar nicht unterstützt ;)

Benutzeravatar
dr.e.
Administrator
Beiträge: 4556
Registriert: 04.11.2007, 16:13:53

Re: Zufallstext

Beitrag von dr.e. » 17.03.2011, 00:51:38

Hast du mal deine Datenbank-Konfiguration, deine Connection-Manager-Konfiguration geprüft und Ralf's Hinweis beachtet? Wenn du überall UTF-8 verwendest, sollte das keine Probleme machen...
Viele Grüße,
Christian

Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Re: Zufallstext

Beitrag von dave » 18.03.2011, 22:05:17

HiHo,

in meiner config zum ConnectionManager habe ich folgendes:

Code: Alles auswählen

DB.Collation = "utf8_general_ci"
DB.Charset = "utf8"
Meine komplette Datenbank habe ich nun nochmal via:

Code: Alles auswählen

ALTER DATABASE `db10589425-4` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci 
umgestellt.

Auch den header sende ich nun nur noch über die index.php via Ralfs Code. Jedoch keine Besserung :(

Die Ausgabe findet ihr im Anhang ;).
Dateianhänge
Unbenannt.JPG
Sonderzeichen und ihre Probleme
Unbenannt.JPG (9.46 KiB) 2332 mal betrachtet

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Zufallstext

Beitrag von Screeze » 18.03.2011, 22:23:29

geh mal auf der webseite (im firefox) auf rechtsklick -> seiteninformationen, was zeigt er dort als Kodierung an?

Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Re: Zufallstext

Beitrag von dave » 18.03.2011, 22:32:55

Nichts leichteres als das :)

UTF-8 ^^
Dateianhänge
Unbenannt.JPG
UTF-8 ?
Unbenannt.JPG (32.09 KiB) 2330 mal betrachtet

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Zufallstext

Beitrag von Screeze » 18.03.2011, 22:52:53

Hmmm dann sollte es definitiv passen - ich vermute deine Dateien sind nicht (alle) utf8 - oder du verwendest vill. ne stringfunktion ohne utf-8 anzugeben...

Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Re: Zufallstext

Beitrag von dave » 20.03.2011, 21:14:54

Hhhmmmmm, bin das gestern Abend alles nochmal ne Stunde durchgegangen und habe alles versucht, jedoch ohne wirklichen Erfolg.

Und zwar kommt alles aus der Funktion createHash. Die gibt die Sonderzeichen schon so verzerrt wieder raus. Warum, kann ich nicht nachvollziehen. Vllt. kann das ja mal jemand anderes bei sich in der Anwendung testen. Kann auch sein, dass der Server das einfach total verhaut. Habe auch an manchen anderen Stellen Probleme mit den Sonderzeichen. Manchmal klappts, manchmal nicht. Nur mit dem Manager klappt es nie ;).

Wenn nötig, hänge ich alle notwendigen Dateien an!

Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Re: Zufallstext

Beitrag von dave » 31.03.2011, 14:09:27

Schluss, Aus, Ende!

Der HE-Support führte mich auf den Pfad der Erleuchtung :D

Ich poste hier mal die fertige, funktionsfähige Klasse:

Code: Alles auswählen

class RandomStringManager extends APFObject {

    private $chars;
    private $lenght;
    private $randomString;

    public function __construct() {
        $this->randomString = '';
    }

    public function init($initParam) {
        if ($initParam['chars'] === '') {
            $this->chars = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
        } else {
            $this->chars = utf8_decode($initParam['chars']);
        }
        if (empty($initParam['lenght'])) {
            $this->lenght = (int)16;
        } else {
            $this->lenght = (int)$initParam['lenght'];
        }
    }

    public function createHash() {
        for ($i = 0; $i < $this->lenght; $i++) {
             $this->randomString .= $this->chars[mt_rand(0, strlen($this->chars) - 1)];
        }

        return utf8_encode($this->randomString);
    }

    public function advancedCreateHash($select, $connectionKey) {
        $this->randomString = '';

        if ($select == '') {
            throw new Exception('[RandomStringManager::advancedCreateHash()] You must provide a SQL query!', E_USER_ERROR);
        }

        if ($connectionKey == '') {
            throw new Exception('[RandomStringManager::advancedCreateHash()] You must provide a ConnectionKey for the SQL Statement!', E_USER_ERROR);
        }

        $cM = &$this->__getServiceObject('core::database', 'ConnectionManager');
        $SQL = &$cM->getConnection($connectionKey);

        $hash = $this->createHash();
        $hash = $SQL->escapeValue($hash);
        $selection = $select . "'$hash'";
        $result = $SQL->executeTextStatement($selection);

        while ($SQL->getNumRows($result) > 0) {
            $this->advancedCreateHash($select, $connectionKey);
            break;
        }

        return $this->randomString;
    }
}
 
Implementierung und Aufruf wie in den Posts vorher beschrieben!

Benutzeravatar
dr.e.
Administrator
Beiträge: 4556
Registriert: 04.11.2007, 16:13:53

Re: Zufallstext

Beitrag von dr.e. » 01.04.2011, 22:29:46

Das klingt doch nicht schlecht. Ich würde sagen, du baust im Wiki eine kleine Doku und ich integriere die Klasse in das SVN. Einverstanden?
Viele Grüße,
Christian

Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Re: Zufallstext

Beitrag von dave » 01.04.2011, 22:34:48

dr.e. hat geschrieben:Das klingt doch nicht schlecht. Ich würde sagen, du baust im Wiki eine kleine Doku und ich integriere die Klasse in das SVN. Einverstanden?
An sich sehr gerne, würde mich darüber freuen ^^.

ABER
folgende Diskussion steht noch ein wenig im Raum, ohne wirkliche Lösung bzw. Verständnis, warum überhaupt:
viewtopic.php?f=10&t=643#p6583

Am besten liest du dort nochmal eine Runde durch und wir schauen dann weiter.

Screeze hat schon Recht, ein

Code: Alles auswählen

utf8_decode($initParam['chars']) 
und späteres

Code: Alles auswählen

utf8_encode($this->randomString) 
ist schon irgendwie bekloppt ;)

Gesperrt

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast