String in UTF-8 umwandeln
-
Hallo
ich habe einen String und möchte den in UTF-8 umwandeln
String^ buffer="Test:äöüÜÖÄß";
nach der Umwandlung soll der String in eine File geschrieben werden
kann mir jemand helfen wie das geht ?
mfg
biedego
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum C++/CLI mit .NET verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Umwandeln geht mit der Encoding Klasse
http://msdn.microsoft.com/de-de/library/system.text.encoding.utf8.aspx?cs-save-lang=1&cs-lang=cpp#code-snippet-3biedego schrieb:
nach der Umwandlung soll der String in eine File geschrieben werden
Das ist überflüssig, man kann beim Speichern eines Strings das Encoding angeben, z.B. in dieser Methode
http://msdn.microsoft.com/en-us/library/ms143376.aspx
-
Im Source-Code sollte man _nie_ Umlaute verwenden!!!
Steck diese in eine resx-Datei! Aber nie in den Source-Code. String-Literale im Source sind in C/C++ compiler-spezifisch und länderabhängig. In China wird also eine andere EXE rauskommen als in Deutschland...
-
Danke für die Antworten
ich habe jetzt folgende Lösung gefunden die bei mir gut arbeitet.
ofstream Datei;
Datei.open( BMECAT_EXT.Dateiname , std::ios::out );
// UTF-8 Code(BOM): EF BB BF - 239 187 191 //
Datei << char(239);
Datei << char(187);
Datei << char(191);
Datei.close();FileStream^ Datei = File::Open( path, FileMode::Append, FileAccess::Write,FileShare::None );
try {
array<Byte>^info = (gcnew UTF8Encoding( true ))->GetBytes( "Test Ausgabe" );
// Daten ins File schreiben
Datei->Write( info, 0, info->Length );
}
finally
{
if ( Datei )
delete (IDisposable^)Datei;
}
-
Lese und schreibe Dateien einfach mit Dem StreamReader/StreamWriter, dann wird das Encoding und das mit dem BOM automatisch gemacht und Du musst nix mehr beachten...
Und bitte: Nimm C# und kein C++/CLI:
http://blog.kalmbach-software.de/de/2010/03/05/ccli-und-winforms-macht-keinen-sinn/