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