unicode FF FE



  • hallo, ich habe schon das ganze forum durchstöbert aber keine lösung gefunden 😞

    wie kann ich mir eine unicode txt datei erstellen wo am anfang "FF FE" mit drinsteht?

    ich hab echt keinen plan mehr, mein programm nutzt std::strings.

    string klaus="hallo";
    dwFileSize=klaus.length();
    	DWORD dwBytesWritten = 0;
    	HANDLE hNewFile = CreateFileW( L"log.txt", GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    	WriteFile(hNewFile,klaus.c_str(), dwFileSize, &dwBytesWritten, NULL); 
    	CloseHandle(hNewFile);
    

    bitte um hilfe 👍

    Also Textdateien mit Inhalt kann ich erstellen aber eben keine "UNICODE" 😡



  • Was für Unicode hättest du denn gerne? Wenn du UTF-16 haben willst und Windows benutzt, dann sollte die Verwendung von wstring schon mal erfolgversprechender sein. Dein BOM bekommst du dann denke ich mit

    std::wstring bom = L"\xFEFF";
    

    Nun musst du nur noch diesen String zuerst in die Datei schreiben.
    (Wohlgemerkt, 0xFEFF, nicht 0xFFFE!)



  • vielleicht solltest du als allererstes die C-Files weglassen und fstreams benutzen.
    Ich nehme an, dass dein EE und EF hexadezimalwerte sind, dann kannst du einfach einem char den Wert 0XEE bzw. 0XEF zuweisen und in den Stream schicken. bzw. fuer unicode gibts vermutlich rigendwelche modifixierten strings, die einen wchar in echtem unicode abspeichern (ist naemlich meines Wissens nicht genau festgelegt, wie wchars abgespeichert werden)



  • also ich muss immer das zeichen "FF FE" von hand in die datei schreiben. gut das zu wissen, ja hexa. UTF-16 benötige ich.

    dann hätte ich noch ne frage zu den streams:

    was ist denn besser? und warum, ich schreibe in window-api prog.

    danke schonmal für eure eingegangene hilfe!!! 👍



  • wintermute81 schrieb:

    also ich muss immer das zeichen "FF FE" von hand in die datei schreiben. gut das zu wissen, ja hexa. UTF-16 benötige ich.

    NICHT 0xFFFE. Das Zeichen ist in Unicode aus gutem Grund undefiniert. 0xFEFF /wird/ auf Little-Endian-Systemen dazu. Das ist der Trick an der Sache.

    wintermute81 schrieb:

    was ist denn besser? und warum, ich schreibe in window-api prog.

    Das ist völlig egal. Aber Streams sind voraussichtlich deutlich einfacher zu handhaben.


Anmelden zum Antworten