String mit vb.net in Unicode wandeln?
Für eine Softwareschnittstelle, die ich gerade selbst in vb.net programmiere muss ich in einen String:
z.B. "Münsterländer Aperitif 16%"
Die Umlaute in Unicode umwandeln. Laut Dokumentation sollte das obige Beispiel dann So aussehen "M\u00fcnsterl\u00e4nder Aperitif 16%"
Zur Zeit versuche ich das so:
Public Shared Function ToUnicode(Text As String) As String
Dim UnicodeArray As Byte() = Encoding.Unicode.GetBytes(Text)
Dim UnicodeString As String = Encoding.UTF8.GetString(UnicodeArray, 0, UnicodeArray.Length)
Return UnicodeString
End Function
Leider sieht der Inhalt des Strings dann so aus:
"M" & vbNullChar & "�" & vbNullChar & "n" & vbNullChar & "s" & vbNullChar & "t" & vbNullChar & "e" & vbNullChar & "r" & vbNullChar & "l" & vbNullChar & "�" & vbNullChar & "n" & vbNullChar & "d" & vbNullChar & "e" & vbNullChar & "r" & vbNullChar & " " & vbNu...
Was nicht wirklich hilfreich ist. Ich hab' keine Ahnung warum jedes zweite Zeichen NULL ist und die Coke Bottles "�" sind ja auch wenig hilfreich.
Hat jemand eine Idee für mich
1 Antwort
Also erst mal sind alle Strings intern als Unicode, genauer UTF-16, codiert. Dein Code scheitert, da UnicodeArray eine UTF-16 codierte Bytefolge enthält und du in der folgenden Zeile vorgibst, das Array sei UTF-8 codiert. Ist es nicht, daher der Fehler.
Für die Darstellung "\u..." benötigst du andere Funktionen. Eine eingebaute ist mir nicht bekannt, aber die kann's durchaus geben. Evtl bekommmst du hier ja noch einen Hinweis dafür. Ich schaue auch nochmal im Web. Ansonsten musst du die String-Ersetzung selbst per Schleife duchführen, vorzugsweise mit einem StringBuilder.
Danke, der Hinweis, dass der String bereits Unicode sein muss hat mich letztlich auf die Richtige Fährte geführt, dass ich an der Stelle gar nichts mehr machen muss. Die Wandlung ist tatsächlich am Ende eine Einstellung im JSON Serializer durch den ich das alles noch mal schicke. Darauf bin ich aber vorher gar nicht gekommen.