Laden...

Text aus Datei mit Umlauten

Erstellt von Stargatefreak vor 15 Jahren Letzter Beitrag vor 15 Jahren 7.023 Views
S
Stargatefreak Themenstarter:in
10 Beiträge seit 2009
vor 15 Jahren
Text aus Datei mit Umlauten

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();
            
        }

.....

1.002 Beiträge seit 2007
vor 15 Jahren

Hallo Stargatefreak,

schau mal, ob dir dieser Link weiterhilft.

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

3.825 Beiträge seit 2006
vor 15 Jahren

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

J
3.331 Beiträge seit 2006
vor 15 Jahren

... oder mit Encoding.Default (das passt bei ANSI fast immer)

Jürgen

4.221 Beiträge seit 2005
vor 15 Jahren

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...

S
Stargatefreak Themenstarter:in
10 Beiträge seit 2009
vor 15 Jahren

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!