Hi,
ich hoffe ihr könnte mir helfen. Ich habe aktuell folgendes Problem:
Ich lese eine TXT-Datei mit meinem Programm ein und übergebe den Inhalt (Text) an eine RichTextBox. In dem Text sind auch Umlaute(ä, ö, ü, etc.) enthalten, diese werden aber in der RichTextBox nicht dargestellt und durch ein Viereck ersetzt. Es liegt wohl an der Zeichencodierung. Ich hab auch schon in die MSDN Hilfe geschaut und dort steht, dass diese Methode mit UTF8 einliest und ich somit auch die Umlaute im Text haben sollte:
StreamReader reader = new StreamReader(fullPathname);
Alternative könnte ich auch diese Methode (laut MSDN) nehmen:
string readText = File.ReadAllText(fullPathname, Encoding.UTF8);
oder:
string readText = File.ReadAllText(fullPathname, Encoding.ASCII);
Beide Möglichkeiten bringen nicht den gewünschten Erfolg (Umlautedarstellung im Text der in der RichTextbox angezeigt wird). Ich hoffe der Post entspricht den Regeln und ihr greift mir ein bisschen unter die Arme.
Vielen Dank
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Configuration;
namespace PSL_admin_tool_v1
{
public partial class Form1 : Form
{
// --------------------------------------------------------
// Variablen für den globalen Einsatz
// --------------------------------------------------------
string dateipfad;
string regelDateipfad;
// --------------------------------------------------------
//
// --------------------------------------------------------
public Form1()
{
InitializeComponent();
// Dateipfad aus der Configdatei auslesen
// ÄNDERUNG: Wenn Dateipfad nicht vorhanden Message ausgeben "Bitte Configdatei anpassen"
AppSettingsReader config = new AppSettingsReader();
string configPfad = (string)config.GetValue("Regelwerkpfad", typeof(string));
dateipfad = configPfad;
// Über die Schleife werden die Inhalte der Combobox aufgebaut, in dem der Ordner ausgelesen wird.
string lPath = @dateipfad;
DirectoryInfo di = new DirectoryInfo(lPath);
FileInfo[] fi = di.GetFiles();
foreach (FileInfo fiTemp in fi)
{
string lresult = Path.GetFileNameWithoutExtension(fiTemp.Name);
comboBox1.Items.Add(lresult);
}
ToolTip tooltip = new ToolTip();
tooltip.SetToolTip(button1, "Ausgewählten Text kopieren");
tooltip.AutomaticDelay = 200;
}
// --------------------------------------------------------
// Combobox1
// --------------------------------------------------------
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
// Hole den ausgewählten Wert (Text) aus der Combobox
string selectedItemName = comboBox1.SelectedItem.ToString();
// Baue Dateipfad auf, um die Datei öffnen zu können
string fullPathname = dateipfad + selectedItemName + ".txt";
// RichTextBox leeren
source.Text = "";
// RichTextBox fühlen mit Text aus Datei
string readText = File.ReadAllText(fullPathname, Encoding.UTF8);
source.Text = readText;
// Alternative: RichTextBox fühlen mit Text aus Datei
// StreamReader reader = new StreamReader(fullPathname);
// string line = reader.ReadLine();
// while (line != null)
// {
// source.Text += line + "\n";
// line = reader.ReadLine();
// }
// reader.Close();
}
.....
Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg
Hallo Stargatefreak,
wie kannst Du denn die Umlaute sehen ? Mit Edit in der Dosbox ? Mit notepad.exe ? Mit Wordpad ? Mit Word ?
Die meisten Texte sind mit ANSI codiert, dann werden sie mit notepad.exe richtig angezeigt. Zum Einlesen muss es dann so heissen :
string readText = File.ReadAllText(fullPathname, Encoding.GetEncoding(1252));
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
... oder mit Encoding.Default (das passt bei ANSI fast immer)
Jürgen
Mit dem Encoding Tester kannst Du testen welches Encoding passt.
Gruss
Programmierhans
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
wie kannst Du denn die Umlaute sehen ? Mit Edit in der Dosbox ? Mit notepad.exe ? Mit Wordpad ? Mit Word ?
Ich sehe die Texte mit Umlaute im Editor, in dem ich diese auch angelegt habe.
Danke mit deinem Vorschlag hat es geklaptt
... oder mit Encoding.Default (das passt bei ANSI fast immer)
Auch damit geht es.
Vielen Dank für die Hilfreichen post!