Wie man richtig öffnen Sie die UTF-8-Dateien in RTF?
Ich habe eine Frage. Mit diesem code öffnen Sie fein die txt-Dateien mit englischem text, aber wenn ich Versuch Sie zu öffnen, die txt-Dateien mit kyrillischen text... die kyrillischen Symbole sind "Quadrate". Ist es möglich dieses problem zu beheben?
string fileData = openFileDialog1.FileName;
StreamReader sr = new StreamReader(fileData);
richTextBox.Text = sr.ReadToEnd();
sr.Close();
SavedFile = saveFileDialog1.FileName;
dataTextBox.SaveFile(SavedFile, RichTextBoxStreamType.PlainText);
Lösung:
string fileData = openFileDialog1.FileName;
StreamReader sr = new StreamReader(fileData, Encoding.Default);
richTextBox.Text = sr.ReadToEnd();
sr.Close();
- Dir Recht! Die Codierung war mein Dokument ANSI. Aber warum dann den Editor von Windows sehen können die Symbole, aber RichTextBox - nicht?
- Notepad erkennt die Codierung heuristisch, es muss ja nicht immer davon ausgehen, alle Dateien sind UTF8
Du musst angemeldet sein, um einen Kommentar abzugeben.
Und Sie sind SICHER, dass die Datei UTF8, richtig? Wenn Sie schreiben, string
str = sr.ReadToEnd();
platzieren Sie einen breakpoint auf die nächste Zeile und beobachten Siestr
in Visual Studio, sehen Sie kyrillischen text rechts? Versuchen öffnen der Datei in den Editor, Datei->Speichern unter und wählen Sie utf-8 als Kodierung.Den Grund, den Editor in der Lage ist zu "Lesen" die Datei ist, die er verwendet den user-Zeichensatz, und in Ihrem Fall ist es wohl die Windows-1251 (Kyrillisch) Codepage.
StreamReader
zu Lesen versucht, die Datei als UTF8. Wenn Sie möchten, können Sie erzwingen, dassStreamReader
verwenden einen anderen Zeichensatz. Der zweite parameter ist dieEncoding
Sie verwenden möchten. Sie passierenEncoding.GetEncoding(1251)
für Kyrillisch. Leider müssen Sie wissen, dasEncoding
"a priori" (=vor) Lesen der Datei.RichTextBox
dass es nicht richtig laden UTF8-Dateien connect.microsoft.com/VisualStudio/feedback/details/435669/... wahrscheinlich ist es der gleiche für die Speichern-operation.Encoding.Unicode
StreamWriter, standardmäßig ist das Lesen von UTF-8-encoding-format, es sei denn, explizit angegeben.
Versuchen, konvertieren Sie den text zu Windows-Kodierung und versuchen, es zu Lesen, wieder mit dem gleichen code.