Wie einen Zeichensatz einer ausgelesenen Datei ändern?

bloodcult

Grünschnabel
[Visual C++ 2005 Express E.] - Wie einen Zeichensatz einer ausgelesenen Datei ändern?

Visual C++ 2005 Express Edition - WindowsForms

Hallo liebe Tutorialianer,

sitze an einem kleinen WindowsForms Programm und bisher macht das Programm auch schon schön was es soll (Benutzereingaben auswerten, ein externes Konsolenprogramm mit Parametern aufrufen und anschließend eine Datei einlesen, sowie diese umkopieren und drucken).

Da ich nicht aus der Sparte der C++/Cli Leute komme ist das alles relatives Neuland für mich, aber durchaus schaffbar mit der richtigen Doku (habe bisher auch gut was geschafft, denk ich).

Mein Problem ist nun folgendes:
---------------------------------------------------
Ich lese eine Datei ein, die im Zeichensatz US-ASCII (kann leider nicht geändert werden) erstellt ist. Die dezimalen Werte der Zeichen sind wie folgt -> Ä = 142, Ö = 153, Ü = 154, ß = 225.

Nun stelle ich leider fest, das beim Drucken oder bei einer Bildschirmanzeige die Umlaute nicht dargestellt werden, in der Textdatei ist allerdings ein Zeichen als Kästchen (nicht unterstütztes Zeichen) angegeben.

Meine Frage:
--------------------------------------------------
Wie konvertiere ich den Zeichensatz, oder wie stelle ich es am Besten an, das Umlaute gedruckt und dargestellt werden? Mir fehlt da bisher leider der Ansatz.

Der relevante (einfach geschriebene) Code:
Code:
			  // FileOpen Dialog anzeigen
			  OpenFileDialog ^ openFileDialog1 = gcnew OpenFileDialog();
			  
			  // FileOpen Dialog Optionen festlegen		  
			  openFileDialog1->Filter = "Textdateien (*.txt)|*.txt";
			  openFileDialog1->Title = "Auswahl der Adressdatei";
			  openFileDialog1->InitialDirectory = "adressen";

			  // Show the Dialog.
			   if ((openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK)){
					StreamReader ^ sr = gcnew System::IO::StreamReader(openFileDialog1->FileName);
					String ^ line;
					String ^ mstrasse	= "89:";
					String ^ mplz	= "90:";
					String ^ mort	= "91:";

					String ^ strasse;

					int counter;
					counter = 0;

					int go;
					go = 0;

					while ((line = sr->ReadLine())){
						if(line->StartsWith(mstrasse)){
							line = line->Replace(mstrasse,"");
							line = line->Trim();
							strasse = line;
						}
						if(line->StartsWith(mplz)){
							line = line->Replace(mplz,"");
							line = line->Trim();
							plz = line;
						}
						if(line->StartsWith(mort)){
							line = line->Replace(mort,"");
							line = line->Trim();
							ort = line;
							go = 1;
						}

						// Verarbeitung
						if(go == 1){

							this->label5->Text = plz;
							this->label6->Text = ort;
							this->label7->Text = "Verarbeite Datensatz " +counter;
							this->label10->Text = strasse;

							MessageBox::Show(strasse + "\n" + plz + " " + ort,"Ausgelesene Adresse");
							
							this->printDocument1->DocumentName = "Datensatz_"+strasse+"_"+plz;
							this->printDocument1->DefaultPageSettings->Landscape = true;
							this->printDocument1->PrintPage += gcnew System::Drawing::Printing::PrintPageEventHandler( this, &Form1::PrintMyPage );
							
							this->printDocument1->Print();

							go = 0;
							counter++;
						}
					}

Gibt es da eine Möglichkeit?

Vielen Dank im Vorraus, gruß

Andreas
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück