ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
6915
6915
EMPFEHLEN
-
Hallo,
Ich bin ganz neu bei c#,
Ich versuche ein Textdatei kontrolieren ob, unicode ist, falls nicht als Unicode zu speichern!
Kann jemand mir helfen?
Ich freue mich sehr!
-
Hallo adilosch!
Nicht dass ich dir den ganzen Lerneffekt wegnehmen möchte, aber dein Problem mit den Codierungen hat mich auch gerade interessiert.
Anbei der Code (sollte laufen):
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
private void button1_Click(object sender, System.EventArgs e) { [COLOR=Green]// Textdatei öffnen[/COLOR] OpenFileDialog ofd = new OpenFileDialog(); ofd.Title = "Textdatei wählen..."; ofd.Filter = "Textdatei (*.txt)|*.txt"; ofd.FilterIndex = 1; if( ofd.ShowDialog() != DialogResult.OK ) return; [COLOR=Green]// Aktuelle Codierung bestimmen[/COLOR] StreamReader reader = File.OpenText(ofd.FileName); if (reader.CurrentEncoding == System.Text.Encoding.Unicode) return; ArrayList al = new ArrayList(); string s; while ((s = reader.ReadLine()) != null) { al.Add(s); } reader.Close(); [COLOR=Green]// Stream mit der zu verwendenden Codierung definieren[/COLOR] FileStream fs = File.OpenWrite(ofd.FileName); StreamWriter writer = new StreamWriter(fs, System.Text.Encoding.Unicode); foreach (string t in al) { writer.WriteLine(t); } writer.Close(); }So einfach wie möglich. Aber nicht einfacher!
Albert Einstein
-
Danke Niro,
Das hat mir sehr geholfen.Ich habe meine Fehler gut korrigiert.Das war genau was ich wollte.
Ich bedanke mich sehr!
-
Hallo. Ich wollte keinen neuen Thread öffnen, da mein Problem ähnlich ist.
Problem: Ich will eine Unicode (UTF-16) Datei erstellen aber die Datei ist immer ASCII. Sprich ich kann sie mit notepad öffnen und sehe einen stinknormalen Text.
Code:
Code :1 2 3
StreamWriter sw = new StreamWriter("./tagopen.txt", false, System.Text.Encoding.GetEncoding("utf-16")); sw.Write("<" + args[0] + ">"); sw.Close();
Wenn ich das Programm mit "tagwriter.exe test" ausführe, dann steht in der Datei "<test>" (ohne Apostrophe). Eigentlich müsste aber jedes Zeichen durch 2 Bytes dargestellt werden (da ja UTF-16 und nicht UTF-8).
Muss ich irgendwas nachinstallieren, damit das geht? Kann ich mir fast nicht vorstellen.
-
Ich habe jetzt folgendes erfolgreich probiert:
Code :1 2 3 4 5 6 7 8 9
// String in eine Byte-Array umwandeln byte[] baASCIIArgs0 = Encoding.ASCII.GetBytes(args[0]); byte[] baUTF16Args0 = Encoding.Convert(Encoding.ASCII, Encoding.Unicode, baASCIIArgs0); // Erstelle UTF-16 Datei FileStream fs = File.Create("./tagopen.txt"); BinaryWriter bw = new BinaryWriter(fs); bw.Write(baUTF16Args0); bw.Close(); fs.Close();
Notepad zeigt zwar noch immer nur "test" an, aber wordpad zeigt alle 8 Bytes an.
Ähnliche Themen
-
Unicode-Fehler
Von skaoson im Forum C/C++Antworten: 11Letzter Beitrag: 30.04.10, 09:55 -
Unicode / Sonderzeichen
Von cxycxy im Forum TypografieAntworten: 1Letzter Beitrag: 09.02.10, 17:17 -
Unicode
Von liquidbeats im Forum PHPAntworten: 4Letzter Beitrag: 30.04.07, 00:52 -
Unicode?
Von Caruso_Nix im Forum JavaAntworten: 5Letzter Beitrag: 11.03.05, 09:25 -
Unicode oder Unicode nicht
Von Trivalik im Forum .NET ArchivAntworten: 1Letzter Beitrag: 09.12.04, 15:02





Zitieren
Login





