Frage

Ich habe über Unterstützung eines Antrags bei der Firma, die ich Arbeit gemacht. Ganz plötzlich will der Kunde in der Lage sein eine eingetragene Marke in einem Namensfeld einzugeben. Das Symbol, mit ALT + 0174, gespeichert wird richtig, aber die App ist kodiert, es nicht richtig. Im Wesentlichen ist dies, was ich tue:

    Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
    Dim ms As New MemoryStream
    Dim xml_text_writer As New XmlTextWriter(ms, _
        System.Text.Encoding.UTF8)

    xml_text_writer.Formatting = Formatting.Indented
    xml_text_writer.Indentation = 4

    xml_text_writer.WriteStartDocument(True)
    xml_text_writer.WriteStartElement("Employees")

    MakeEmployee(xml_text_writer, txtFName.Text, txtLName.Text, 11111)

    xml_text_writer.WriteEndElement()
    xml_text_writer.WriteEndDocument()
    xml_text_writer.Flush()

    ms.Flush()
    ms.Position = 0
    Dim b(CInt(ms.Length) - 1) As Byte
    ms.Read(b, 0, CInt(ms.Length))
    ms.Close()

    Dim strReturn As String = System.Text.ASCIIEncoding.ASCII.GetString(b)
    If strReturn.StartsWith("???", StringComparison.CurrentCultureIgnoreCase) Then
        strReturn = strReturn.Substring(3)
    End If

    txtName.Text = strReturn

End Sub

Private Sub MakeEmployee(ByVal xml_text_writer As  _
XmlTextWriter, ByVal first_name As String, ByVal _
last_name As String, ByVal emp_id As Integer)
    xml_text_writer.WriteStartElement("Employee")

    xml_text_writer.WriteStartElement("FirstName")
    xml_text_writer.WriteString(first_name)
    xml_text_writer.WriteEndElement()

    xml_text_writer.WriteStartElement("LastName")
    xml_text_writer.WriteString(last_name)
    xml_text_writer.WriteEndElement()

    xml_text_writer.WriteStartElement("EmployeeId")
    xml_text_writer.WriteString(emp_id.ToString)
    xml_text_writer.WriteEndElement()

    xml_text_writer.WriteEndElement()
End Sub

Der Ausgang ich von diesem Code erhalten, ist dies:

             John         Schmied ??         11111     

Alles ist in Ordnung, mit Ausnahme des „??“ nach „Smith“ sollte „®“. Was ist der beste Weg, wenn überhaupt, richtig das Symbol angezeigt wird?

War es hilfreich?

Lösung

  

Dim strReturn As String = System.Text.ASCIIEncoding.ASCII.GetString (b)

Sie codiert, um die XML in UTF-8, tun Sie es nicht zurück, als ASCII lesen. Hier finden Sie alle Sonderzeichen verlieren, die nicht codiert werden kann. Fix:

Dim strReturn As String = System.Text.Encoding.UTF8.GetString(b)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top