none
Problem mit Unicode und Ansi RRS feed

  • Frage

  • Ich habe einen CString den ich in ein char-Array konvertieren möchte, damit ich es dann weiter benutzen kann. Hier scheitere ich jedoch immer an der Konvertierung von Unicode nach Ansi.

    VisualCPlusPlus
    Freitag, 18. November 2011 23:39

Antworten

  • Prinzipiell muß eine Konvertierung von Unicode zu ANSI nicht grundsätzlich möglich sein, wenn Du z.B. Zeichen einer anderen Sprache benutzt... extrem wäre Arabisch, Japanisch, Chinesisch... dies aber nur als Anmerkung.

    Hier eine Möglichkeit der Konvertierung:

      CString l_Text_ics=CString("Das ist ein Text");
      char  l_CharPtr_pc[80];
     
      wcstombs(l_CharPtr_pc , l_Text_ics.GetBuffer(), 80);
    


     

    • Als Antwort markiert KK Senior Sonntag, 20. November 2011 14:58
    Samstag, 19. November 2011 17:40
  • Ansonsten kann man ganz einfach auch CStringA direkt verwenden oder eben die ATL Makros, die das auch einfach machen.

    CString str=CString("Das ist ein Text");
    char achar[80];
    strcpy(achar,CT2A(str));
    
    

    Der obige Code funktioniert immer, egal ob das Projekt Unicode oder MBCS ist.


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
    • Als Antwort markiert KK Senior Sonntag, 20. November 2011 14:58
    Samstag, 19. November 2011 18:48
    Moderator

Alle Antworten

  • Prinzipiell muß eine Konvertierung von Unicode zu ANSI nicht grundsätzlich möglich sein, wenn Du z.B. Zeichen einer anderen Sprache benutzt... extrem wäre Arabisch, Japanisch, Chinesisch... dies aber nur als Anmerkung.

    Hier eine Möglichkeit der Konvertierung:

      CString l_Text_ics=CString("Das ist ein Text");
      char  l_CharPtr_pc[80];
     
      wcstombs(l_CharPtr_pc , l_Text_ics.GetBuffer(), 80);
    


     

    • Als Antwort markiert KK Senior Sonntag, 20. November 2011 14:58
    Samstag, 19. November 2011 17:40
  • Ansonsten kann man ganz einfach auch CStringA direkt verwenden oder eben die ATL Makros, die das auch einfach machen.

    CString str=CString("Das ist ein Text");
    char achar[80];
    strcpy(achar,CT2A(str));
    
    

    Der obige Code funktioniert immer, egal ob das Projekt Unicode oder MBCS ist.


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
    • Als Antwort markiert KK Senior Sonntag, 20. November 2011 14:58
    Samstag, 19. November 2011 18:48
    Moderator
  • OK, mit

    CString str=CString("Das ist ein Text");
    char achar[80];
    strcpy(achar,CT2A(str));
    
    hat es funktioniert.


    VisualCPlusPlus
    Sonntag, 20. November 2011 14:58
  • ok mit

    CString str=CString("Das ist ein Text");
    char achar[80];
    strcpy(achar,CT2A(str));

    hat es funktioniert.

    VisualCPlusPlus
    Sonntag, 20. November 2011 14:58