CGI und UTF-8



  • das Programm muss nur auf Windows lauffähig sein.

    Und? Fehler beheben! Steht doch da was los ist. Du mußt die Lib linken.

    dass ist ja das Problem, ich habe die Include-Pfade gesetzt und die include's gemacht, im Linker die pfade zu den lib gesetzt und die .dll's ausm /bin zum Projekt hinzugefügt so wie ich es bei der GDlib gemacht habe. Aber trotzdem kommt dieser Fehler. Wenn ich z.B.: UBool benutzte funktioniert es. Was mach ich den noch falsch???

    mfg DarkMaTTi



  • Nein, wstring ist falsch! UTF8 ist einfach Unicode in 8 Bit verpackt. Sprich du kannst einen einfachen std::string nehmen. Nur ist eben ein Zeichen nicht unbedingt ein char groß.
    http://en.wikipedia.org/wiki/UTF-8

    Worum geht es dir genau? Wenn du UTF-8 ausgeben willst, dann musst du einfach nur UTF-8 Strings in deiner Datei benutzen. Wenn du bestehende Daten in UTF-8 konvertieren willst, dann kannst du das mit ccodecvt tun.

    Ansonsten gibt es noch http://utfcpp.sourceforge.net/ zur Behandlung von UTF-8 Strings.



  • rüdiger schrieb:

    Nein, wstring ist falsch! UTF8 ist einfach Unicode in 8 Bit verpackt. Sprich du kannst einen einfachen std::string nehmen.

    Warum string??? das ist ein ASCII-String, der absolut für UTF-8 ungeeignet ist.

    Der Fragesteller hat einen wstring, in dem er wahrscheinlich UCS-2 oder UCS-4 benutzt. Und er will nach UTF-8 umwandeln, dafür brauch er gar keinen String. Das was er rauskonvertiert ist "flüchtig".



  • Natürlich kannst Du einen UTF-8 konvertierten String in einem std::string halten, man muss dann halt nur bissel aufpassen:

    std::string("ä").length(); // 2
    

    Einfach mal http://utfcpp.sourceforge.net/ aufmerksam lesen und es wird denk ich einiges klarer werden.

    Gut Schuß
    VuuRWerK 😉



  • Bulli schrieb:

    rüdiger schrieb:

    Nein, wstring ist falsch! UTF8 ist einfach Unicode in 8 Bit verpackt. Sprich du kannst einen einfachen std::string nehmen.

    Warum string??? das ist ein ASCII-String, der absolut für UTF-8 ungeeignet ist.

    Nein. UTF-8 wurde doch genau dafür entworfen, dass es einfach in 8 Bit großen Strings verwendet werden kann. Nur ist eben nicht unbedingt ein Zeichen gleich ein char (siehe VuuRWerKs Posting).



  • VuuRWerK schrieb:

    Natürlich kannst Du einen UTF-8 konvertierten String in einem std::string halten, man muss dann halt nur bissel aufpassen:

    std::string("ä").length(); // 2
    

    Weißt du, dann kannst du auch std::vector<char> benutzen! Und das ist nicht der Sinn, wenn mir jemand verklickern will, das std::string UTF-8-fähig ist. Genau DAS zeigt, das es nicht so ist. Ein String-Interface soll mich unterstützen, und nicht behindern.



  • zum Thema intener Datentyp: http://www.kharchi.eu/wiki/doku.php?id=cpp:std:string#internationalisierung

    mir geht es einfach darum dass die Ausgabe die ich mit meiner CGI mache UTF-8 Codiert ist. VC++2008 arbeitet mit Unicode trotzdem ist die Ausgabe in ISO und nicht UTF-8???

    mfg DarkMaTTi



  • Vielleicht hilft dir folgendes von Roger Wilco:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-244120-and-start-is-10.html

    Du hast zwar kein Konsolen-Thema, aber du schreibst wahrscheinlich auch in einen Stream (wcout ist ja auch nur ein stream-Object).



  • warum die Biblo nicht funzt kann keiner sagen oder?



  • DarkMaTTi schrieb:

    das Programm muss nur auf Windows lauffähig sein.

    Und? Fehler beheben! Steht doch da was los ist. Du mußt die Lib linken.

    dass ist ja das Problem, ich habe die Include-Pfade gesetzt und die include's gemacht, im Linker die pfade zu den lib gesetzt und die .dll's ausm /bin zum Projekt hinzugefügt so wie ich es bei der GDlib gemacht habe. Aber trotzdem kommt dieser Fehler. Wenn ich z.B.: UBool benutzte funktioniert es. Was mach ich den noch falsch???

    mfg DarkMaTTi

    Den Pfad nur hinzufügen reicht ja nicht. Hast du auch die .a-Datei angegeben?
    Und hast du überhaupt den MSVC im Einsatz? Weil wenn ich unter http://icu-project.org/download/4.2.html#ICU4C schaue, gibts ja nur MSVC-Downloads. Oder hast du für deinen MinGW (steht zumindest Codeblocks in deinem Pfad) die Lib selber gebaut?



  • Problem gelöst -> Eclipse CTP und MinGW kann mit UTF-8 umgehen und ausgeben. Auch wenn die Einrichtung umständlich ist...

    mfg DarkMaTTi



  • Ich glaub das löst nicht Dein Problem. Die Ausgabe in Eclipse ist vielleicht UTF-8 fähig aber die Windowsconsole oder irgend ein anderes Ausgabemedium kann es nicht von vornherein, und schon hast Du wieder Probleme 😉

    Gut Schuß
    VuuRWerK 😉


Anmelden zum Antworten