Encoding Sonderzeichen

Peter86

Erfahrenes Mitglied
Hallo,
ich empfange über UDP daten von einem anderen server. Soweit sogut, nur leider werden mir keine Sonderzeichen angezeigt, stattdessen werden diese durch fragezeichen ersetzt. Weiß jemand wie ich es lösen kann, das alle zeichen korreckt angezeigt werden?

Peter86

Visual Basic:
Imports System.Net
Imports System.Net.Sockets
Imports System.Threading
Module Module1
    Dim client As UdpClient
    Dim receivePoint As IPEndPoint
    Sub Main()
        client = New UdpClient(5000)
        receivePoint = New IPEndPoint(New IPAddress(0), 0)
        Dim readThread As Thread = New Thread(New ThreadStart(AddressOf WaitForPackets))
        readThread.Start()
    End Sub

    Public Sub WaitForPackets()
        While True
            Dim data As Byte() = client.Receive(receivePoint)
            Console.WriteLine(System.Text.Encoding.ASCII.GetString(data))
        End While
    End Sub
End Module
 
Hi.

Das kommt drauf an, in welchem Zeichensatz die empfangenen Daten kodiert sind?

Aber wenn du ASCII nimmst, ist das natürlich nicht verwunderlich wenn keine Sonderzeichen angezeigt werden.

Auf der Konsole wird üblicherweise Codepage 850 eingestellt sein:
Code:
Text.Encoding.GetEncoding('cp850')
Gruß
 
Danke, das hat mich schon etwas weiter gebracht. Doch wie bekomme ich umlaute (ä,ü,ö) richtig angezeigt?
Ist es auch möglich alle, auf einem installierten Rechner, Zeichen richtig anzeigen zu lassen?
Um ein bisschen klarer zu machen worum es geht. Ich hab ein Tool geschrieben womit ich die Log eines CSS server empfange (logaddress_add), funktioniert eigentlich genauso wie HLSW. Nur werden besondere zeichen einfach falsch dargestellt und besondere zeichen werden in CSS oft verwendet.

Ich hoffe auch hier könnt ihr mir helfen.
 
Hi.

Womit sind denn die Daten kodiert, die du von deinem CSS Server bekommst? UTF8, ISO-8859-1(5)?

Je nachdem könntest deine Zeile 17 anpassen. Zum Beispiel so:

C#:
Console.WriteLine(System.Text.Encoding.UTF8.GetString(data))

lg,..
 
Hi,
Ich habe leider keine Ahnung welche kodierung es ist. Gibts irgenteine möglichkeit das rauszufinden? Hab mich schon auf den seiten von Valve umgeschaut aber nichts brauchbares gefunden.

Visual Basic:
Console.WriteLine(System.Text.Encoding.UTF8.GetString(data))
Hab ich schon alles ausprobiert, leider kein erfolg.

EDIT:
Für die umlaute hab ich nun eine Lösung.
Empfangen tu ich bei ä - ä. Ich ersetzte später einfach ä mit ä und hab das gewünschte ergebnis. Muss ich das jetz für jedes besondere zeichen machen? Oder gibts irgentwie eine liste?
 
Zuletzt bearbeitet:
Hi,
Ich habe leider keine Ahnung welche kodierung es ist. Gibts irgenteine möglichkeit das rauszufinden?
Schreib die Daten einfach mal in eine Datei und öffne sie mit einem Editor der verschiedene Zeichensätze unterstützt (z.B. Notepad++).
Visual Basic:
Console.WriteLine(System.Text.Encoding.UTF8.GetString(data))
Hab ich schon alles ausprobiert, leider kein erfolg.
Ändere mal die Schriftart der Konsole auf Lucida. Um dann alle Zeichen darstellen zu können ändere den Zeichensatz auf UTF-8:
Code:
System.Console.OutputEncoding = System.Text.Encoding.UTF8

Gruß
 

Neue Beiträge

Zurück