Laden...

IRC Chat: Empfangenen Text erkennen und UTF8-kodiert speichern

Erstellt von cyanide1l vor 11 Jahren Letzter Beitrag vor 11 Jahren 899 Views
Thema geschlossen
C
cyanide1l Themenstarter:in
1 Beiträge seit 2012
vor 11 Jahren
IRC Chat: Empfangenen Text erkennen und UTF8-kodiert speichern

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:

[02:56:39] <+AllsheKnows> Erdöl

Ist dies aber nicht so, erhalte ich (bekannterweise) komische Zeichen...

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

C
2.121 Beiträge seit 2010
vor 11 Jahren

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.

643 Beiträge seit 2006
vor 11 Jahren

Anderes encoding benutzen ?

49.485 Beiträge seit 2005
vor 11 Jahren

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

Thema geschlossen