Übergabe von Unciode-Zeichen an main



  • Hallo Fabeltier,

    ich habe jetzt die von dir genannten Header includiert, aber mit dem selben Ergebnis.

    Ich habe auch noch eine andere Main-Methode gefunden:

    wmain(int argc, wchar_t *argv[])
    

    Ich erhalte aber nach wie vor für jedes Unicode-Zeichen ein Fragezeichen.



  • @Fabeltier

    Was meinst du mit "WEOF statt EOF"?



  • punkdevil schrieb:

    Ich bekomme für Unicode-zeichen immer das gleiche Sonderzeichen, wie bei der ersten main Variante.

    wenn deine unicode-zeichen aus zwei bytes bestehen (also nicht UTF-8 oder so kodiert sind), dann musst du auch die richtigen funktionen aufrufen. eine automatische konvertierung von wchar in char findet nicht statt. normale printf/putchar/puts usw, können nur mit char* umgehen, also nimm statt 'printf' z.b. 'wprintf' etc.
    🙂



  • punkdevil schrieb:

    @Fabeltier

    Was meinst du mit "WEOF statt EOF"?

    War nur ein Hinweis, dass Du an vieles denken musst. Wenn Du schon die richtigen includes vergessen hast, wirst Du bei zB bei EOF (End of File) oder aehnlichen Geschichten auf die gleichen Probleme stossen! Wie Du die Zeichen "bekommst" ist natuerlich die Frage. D.h. ob Du sie etwa als UNICODE einliest und wie Gast8782651234 wohl auch annimmt, sie dann als ASCI versuchst auszugeben? Das haengt auch damit zusammen, dass Du dabei an vieles denken musst 😉

    Eine Workaround waere vllt auch, die Unicode Zeichen als ASCII einzulesen (=unleserlich) und das eingelesene Zeug dann wieder in UNICODE umzuwandeln?!



  • Hallo,

    mir ist bekannt, dass ich die entsprechenden Unicode-Funktionen verwenden muss.

    Mein Problem ist aber, dass ich schon die übergebenen Parameter nicht richtig als Unicode-Zeichen erkenne.

    D.h., wenn ich debugge und mir z.B. den ersten Parameter anschaue (argv[0]), dann wird mir für jedes Unicode-zeichen das Fragezeichen angezeigt.



  • Hast du den Compiler denn so umgestellt, daß er die UNICODE-Variante der main-Funktion verwendet?
    Und wie rufst du das Programm dann mit Unicode-Zeichen auf?



  • so sollte es gehn:

    ➡ Compiler auf Unicode umstellen (wenn nicht vorhanden haste jetzt schon verlorn, dann brauchst den rest nicht mehr machen)

    ➡ <tchar.h> inkludieren

    ➡ anstatt char oder wchar_t immer TCHAR nehmen (bei unicode ist TCHAR=wchar_t). Bei den Funktionen ein '_t' voranstellen, also _tmain, _tprintf etc. bei den ganzen string-funktionen eben, dann dürfte es gehn



  • david hasselhoff schrieb:

    ➡ anstatt char oder wchar_t immer TCHAR nehmen (bei unicode ist TCHAR=wchar_t). Bei den Funktionen ein '_t' voranstellen, also _tmain, _tprintf etc. bei den ganzen string-funktionen eben, dann dürfte es gehn

    ist TCHAR standard? nicht ms-spezifisch?



  • millisekunde schrieb:

    david hasselhoff schrieb:

    ➡ anstatt char oder wchar_t immer TCHAR nehmen (bei unicode ist TCHAR=wchar_t). Bei den Funktionen ein '_t' voranstellen, also _tmain, _tprintf etc. bei den ganzen string-funktionen eben, dann dürfte es gehn

    ist TCHAR standard? nicht ms-spezifisch?

    doch, jetzt wo dus sagst 😃 . bin mir zwar nicht hundert prozentig sicher aber dürfte MS spezfisch sein, wobei man sich die meisten funktionen auch nachbaun' kann.



  • @david hasselhoff: Wie stelle ich den Compiler auf Unicode um? (MS Visual Studio 2003)



  • hocke gerade nicht vorm richtigen pc deshalb kann ichs nicht überprüfen aber normalerweise müsste unicode bei einem neuen projekt automatisch aktiviert sein. da du aber normalerweise funktionen wie printf() etc. verwendest, die eh mit char arbeiten, wirds dir einfach nich aufgefallen sein, dass unicode an is. binde einfach mal tchar.h ein und lass dir sizeof(TCHAR) oder so ausgeben (ausgabe: 1 = Unicode aus). dann schau mal unter projekt->eigenschaften ... da kann mans auf jedenfall irgendwo umstellen, müsst ich aber nochmal genauer nachschaun wenns bis dahin immer noch nicht klappt.


Anmelden zum Antworten