UNICODE-String in ANSI-String umwandeln...?



  • Hallo Progger 😉 ,

    Wie wandle ich einen UNICODE-String in einen ANSI-String um ?

    Ich bin mir ziemlich sicher, dass ich die Funktion WideCharToMultiByte verwenden muss, das Problem ist nur,
    dass ich nicht genau weiß, welche Parameter ich verwenden muss 😕 . Mein Problem ist weiterhin, das
    mein Quell-String im Format UTF16, UTF16BE oder UTF8 vorliegt (weiß aber welches davon nun zutrifft). Wie kann
    ich das machen ? Könnt ihr mir da vllt. mal n kleinen Code-Schnipsel zeigen ? Wäre echt nett von euch!

    Liebe GrÜßE und danke schonmal
    Tim



  • Hast du dir schon das Beispiel in der MSDN-Library angeschaut: http://msdn.microsoft.com/library/en-us/netmgmt/netmgmt/looking_up_a_users_full_name.asp

    Zum Format: Du meintest, weiß nicht welches davon nun zutrifft, oder?!



  • Hi, danke für dein Reply!

    Das Beispiel werd ich mir angucken.

    Doch ich weiß, welches ich vorliegen hab. Aber in der MSDN zur oben
    genannten Funktion steht ja:

    CodePage
    Specifies the code page to be used to perform the conversion. This parameter can be given the value of any code page that is installed or available in the system. You can also specify one of the following values: Value Meaning
    CP_ACP ANSI code page
    CP_MACCP Macintosh code page
    CP_OEMCP OEM code page
    CP_SYMBOL Symbol code page (42)
    CP_THREAD_ACP The current thread's ANSI code page
    CP_UTF7 Translate using UTF-7
    CP_UTF8 Translate using UTF-8

    Da steht aber nichts von UTF16, UTF16BE oder UTF8 🙄 .
    Was muss ich da nehmen ?



  • UTF-16LE is CP:1200 - nimm die feste zahl oder mach ein eigenes define anstatt den CP_UTF8 usw



  • Mr Evil schrieb:

    UTF-16LE is CP:1200 - nimm die feste zahl oder mach ein eigenes define anstatt den CP_UTF8 usw

    Sorry versteh deine Antwort nicht 🙄 ... Könnteste das noch n bissl erläutern... ? Bitte 😉

    Also wenn ich einen UNICODE-String habe:

    #define UNICODE
    #include <windows.h>
    TCHAR szBuffer[] = TEXT("Hallo");
    

    Der -mal angenommen- im Format UTF16BE vorliegt (Das weiß ich vorher).

    Wie kann ich den jetzt in einen ANSI-C-String konvertieren ?



  • Ich nehme mal an, Mr Evil meinte so wie im Beispielcode nur eben statt z.B. CP_UTF8 direkt die Zahl 1200 einsetzen (bzw. dir dafür ein define anlegen, wenn du es als Zahl unschön findest)



  • Was ist den der Unterschied zwischen:
    - CP_UTF7
    - CP_UTF8
    bzw:
    - UTF16
    - UTF16BE

    Und was muss ich beim konvertieren beachten ?

    Danke nochmal/schonmal an alle 😉 Echt n super Forum hier 👍





  • flenders schrieb:

    Ich nehme mal an, Mr Evil meinte so wie im Beispielcode nur eben statt z.B. CP_UTF8 direkt die Zahl 1200 einsetzen (bzw. dir dafür ein define anlegen, wenn du es als Zahl unschön findest)

    WideCharToMultiByte( 1200, ... )
    behandelt den inhalt als UTF16

    an dieser stelle aber schwachsinn, WideCharToMultiByte convertiert nach unicode, aber UTF-16 ist bereits unicode, entsprechend macht diese funktion ggf muell aus den strings

    als beispiel - du willst strings nach einer neuen codepage umcoden:

    quelle = utf-8
    WideCharToMultiByte( CP_UTF8, ... )
    MultiByteToWideChar( CP_TARGET, ... )

    quelle = utf-16
    MultiByteToWideChar( CP_TARGET, ... )


Anmelden zum Antworten