Schreiben einer text-Datei aus VB.NET (Codierung)
Ich Schreibe eine Anwendung, die generieren muss, die einen nur-text-Datei mit fester Größe Spalten.
Mein aktuelle code:
Dim MyFilePath As String = Path & FILE_PREFIX & FileNr & ".TXT"
IO.File.Delete(MyFilePath)
Dim FileStr As New IO.StreamWriter(MyFilePath, False, <ENCODER HERE>)
Do While r.Read
FileStr.WriteLine(r("TXTLine"))
Loop
FileStr.Close()
r.Close()
Mein problem ist, dass ich einige Sonderzeichen wie "ñ", "à", usw., und ich kann nicht finden die richtige Codierung.
- Wenn ich den Standard, dann wird es ersetzt
"ñ" mit zwei Charakteren. - Wenn ich ASCII-dann alle speziellen
Zeichen am Ende so: "?" - Wenn ich UTF-8 dann alle text ist OK,
aber es fügt ein "ÿ" in das erste byte der
die Datei.
Ich brauche das Sonderzeichen geschrieben werden, die in der Textdatei so wie Sie kamen in den datareader. Und ich kann nicht zusätzliche Zeichen Hinzugefügt, weil die Spalten eine Feste Länge...
Was könnte ich tun?
- Das ÿ ist ein [Byte Order Mark][1]... Was sind Sie das öffnen der Dateien? [1]: en.wikipedia.org/wiki/Byte-order_mark
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie werden Sie überprüft haben, dass Sie die richtige Codierung?
Wenn Sie einfach öffnen Sie die Datei in Editor, Windows-1252 ist wahrscheinlich die Codierung, die Sie wollen.
geben Ihnen dass.
Beachten Sie, dass ich merke, dass Sie sagen, dass einige der Spalten mit fester Länge. Schreiben Sie Daten in eine Datei für den import von einem anderen tool? Wenn ja, dann sollten Sie prüfen, welche Codierung das andere Werkzeug benötigt, nicht das tool sieht ziemlich was auch immer andere Werkzeug, das Sie verwenden könnte, um Blick auf die Datei mit (z.B. Notepad).
Das problem ist nicht, dass Sie können nicht finden die richtige Codierung, das problem ist Sie weiß nicht, was Ihre QUELLE Codierung. Nur Reine ASCII wirklich hat 256 Zeichen, und wenn Ihre Quelle enthält Sonderzeichen, die nicht im ASCII-palette, Sie werden nicht in der Lage zu schreiben, Sie in der ASCII-Codierung. Ende der Geschichte.
Was Sie tun müssen, ist die erneute Prüfung der Kommunikation zwischen den beiden Systemen. Wenn Sie brauchen, um unicode-Zeichen, dann die Quelle und das Ziel müssen akzeptiert unicode-sei es in einem flat file oder XML-Dokument.
Können Sie nicht setzen Sie ein Quadrat peg (unicode-Zeichen mit Akzent), der in ein rundes Loch (ASCII-Datei).
Warten Sie, Sie sagen, dass die Spalten müssen "Feste Länge". Schlägt vor, dass Sie versuchen, diese Datei zu Lesen, die von einer anderen Anwendung - sind Sie auch sicher, dass diese zweite Anwendung, die Lesen können, "speziellen" (Unicode) Zeichen?
Sind Sie sicher, dass die andere Anwendung nicht erwarten nur ASCII-und hat einfach eine bestimmte code Seite behandelt, von denen auch einige spezielle Zeichen, die mit völlig anderen zahlen (interpretiert hohen bit-ASCII-Zeichen in einigen lokalen Sprache)?