Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
IRC Chat: Empfangenen Text erkennen und UTF8-kodiert speichern
cyanide1l
myCSharp.de - Member



Dabei seit:
Beiträge: 1

Themenstarter:

IRC Chat: Empfangenen Text erkennen und UTF8-kodiert speichern

beantworten | zitieren | melden

Moin!

Ich möchte in einem IRC Chat den Verlauf eines Channels loggen, das Problem ist nun aber das z.B ältere mIRC-Versionen die Nachrichten nicht UTF8 kodiert senden, sondern....keine Ahnung, jedenfalls nicht UTF8.

Sendet ein User in UTF8, so klappt alles:
Zitat
[02:56:39] <+AllsheKnows> Erdöl

Ist dies aber nicht so, erhalte ich (bekannterweise) komische Zeichen...
Zitat
[02:56:51] <+AllsheKnows> Erdöl


                    UTF8Encoding enc = new UTF8Encoding(true, true);
                    try
                    {
                        queue += enc.GetString(buffer, 0, bytesRead);
                    }
                    catch (DecoderFallbackException)
                    {
                        // Diese Zeile muss verkehrt sein
                        queue += ASCIIEncoding.Default.GetString(buffer, 0, bytesRead);
                    }



Habt ihr vieleicht eine Idee, wie ich Text der nicht UTF8 ist, in eine Textdatei bekomme, so dass ich ihn auch lesen kann?

Danke euch.


Achja: Läuft das Programm unter Windows, funktioniert alles, aber unter Linux (wo es nachher laufen soll) nicht.
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von cyanide1l am .
private Nachricht | Beiträge des Benutzers
chilic
myCSharp.de - Experte



Dabei seit:
Beiträge: 2111

beantworten | zitieren | melden

Das sieht aber schon nach UTF8 aus, das nicht richtig dargestellt wird.
Da solltest du dir die Bytes ansehen, was da drin steht, vielleicht findest du ja was raus. Probier verschiedene Encodings aus, bis eins das ö richtig zuordnet. ASCII dürfte dazu nicht geeignet sein, nimm mal das "Current".

Ich wüsste aber keinen Weg wie man das 100% richtig zuordnen kann, denn du kannst den Bytes nicht ansehen was sie in ihrer aktuellen Codierung darstellen sollen.
private Nachricht | Beiträge des Benutzers
Ayke
myCSharp.de - Member

Avatar #avatar-2293.gif


Dabei seit:
Beiträge: 655
Herkunft: Hamburg

beantworten | zitieren | melden

Anderes encoding benutzen ?
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo cyanide1l,

das Thema, wie man einem Text oder besser gesagt einer Byte-Folge das Encoding ansieht, hatten wir schon öfter. Bitte benutze die Forensuche. Kurz gesagt, es gibt keinen sicheren Weg, sondern ist nur statistisch bzw. mit einer gewissen Wahrscheinlichkeit.

Ansonsten ist Encoding ASCII offensichtlich falsch, den es ist 7-bit und enthält überhaupt keine Umlaute. Hattest du überhaupt in die MSDN Doku geschaut? Typischerweise ist Encoding.Default richtig.

herbivore
private Nachricht | Beiträge des Benutzers