| |
VB.NET - Ein- und Umsteiger[VB.net] UTF String ("\u00f6") in Latin Char "ö" wandeln | | | Autor: Seek1 | Datum: 30.07.21 10:00 |
| Hallo Leute,
Ich habe das Problem, dass wenn ich über eine RestAPI Daten auslese,
z.Bsp. den Namen "Sepp P\u00f6lzler" auslese.
Dieser Name wird komplett als String geliefert.
Der Name wird anschliesend nach "Latin konvertiert".
Hierfür verwende ich folgende "lookup" liste:
NewString = NewString.Replace("\u00e4", "ä")
NewString = NewString.Replace("\u00e8", "è")
NewString = NewString.Replace("\u00e9", "é")
NewString = NewString.Replace("\u00ed", "í")
NewString = NewString.Replace("\u00f1", "ñ")
NewString = NewString.Replace("\u00fc", "ü")
NewString = NewString.Replace("\u00f6", "ö")
NewString = NewString.Replace("\u003c", "<")
<pre><code> Danach ist der String wieder "Sepp Pölzler"
Habe mir schon mal das system.text.encoding angesehen und auch bei MS
folgenden Code gefunden: (Vielleicht braucht den mal jemand)
Public Function UnicodeToISO(ByVal unicodeString As String) As String
Dim ascii As Encoding = Encoding.GetEncoding("ISO-8859-1")
Dim unicode As Encoding = Encoding.UTF8
Dim unicodeBytes As Byte() = unicode.GetBytes(unicodeString)
Dim asciiBytes As Byte() = Encoding.Convert(unicode, ascii, unicodeBytes)
Dim asciiChars(ascii.GetCharCount(asciiBytes, 0, asciiBytes.Length) - 1) As Char
ascii.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0)
Dim asciiString As New String(asciiChars)
Return asciiString
End Function Leider hilft der mir nicht weiter, weil er "\u00f6" in "\u00f6"
konvertiert.
Ich brauche aber etwas, das aus dem STRING "\u00f6" das CHAR "ö"
erstellt oder gleich den kompletten String nach Latin übersetzt
Die Daten werden anschliessend einem anderen Programm übergeben, dass ich nicht ändern kann :-/
Kann mir da wer weiter helfen? | |
Re: [VB.net] UTF String ("u00f6") in Latin Char "ö" wandeln | | | Autor: -Franky- | Datum: 30.07.21 11:17 |
| Hi
Versuche es mal hiermit.
Option Strict On
Option Explicit On
Imports System.Text
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles _
Button1.Click
Debug.Print(RegularExpressions.Regex.Unescape("Sepp P\u00f6lzler"))
End Sub
End Class Mit freundlichen Grüßen
-Franky- | |
Re: [VB.net] UTF String ("u00f6") in Latin Char "ö" wandeln | | | Autor: Seek1 | Datum: 04.08.21 08:21 |
| Genaus das wars :-D
Danke !
Ein Problem habe ich noch, wenn ich Strings in XML umwandel.
Da habe ich auch eine Filterliste.
Gibt es da nicht auch so eine "kleine" Lösung?
Aktuelle sieht das so aus:
Sub CheckForForbiddenChar(ByRef StringToCheck)
'
If InStr(StringToCheck, "&") Then
StringToCheck = Strings.Replace(StringToCheck, "&", "&")
End If
If InStr(StringToCheck, "<") Then
StringToCheck = Strings.Replace(StringToCheck, "<", "<")
End If
If InStr(StringToCheck, ">") Then
StringToCheck = Strings.Replace(StringToCheck, ">", ">")
End If
If InStr(StringToCheck, "'") Then
StringToCheck = Strings.Replace(StringToCheck, "'", "'")
End If
If InStr(StringToCheck, Chr(34)) Then
StringToCheck = Strings.Replace(StringToCheck, Chr(34), """)
End If
If InStr(StringToCheck, "Ä") Then
StringToCheck = Strings.Replace(StringToCheck, "Ä", "Ä")
End If
If InStr(StringToCheck, "Ö") Then
StringToCheck = Strings.Replace(StringToCheck, "Ö", "Ö")
End If
If InStr(StringToCheck, "Ü") Then
StringToCheck = Strings.Replace(StringToCheck, "Ü", "Ü")
End If
If InStr(StringToCheck, "ä") Then
StringToCheck = Strings.Replace(StringToCheck, "ä", "ä")
End If
If InStr(StringToCheck, "ö") Then
StringToCheck = Strings.Replace(StringToCheck, "ö", "ö")
End If
If InStr(StringToCheck, "ü") Then
StringToCheck = Strings.Replace(StringToCheck, "ü", "ü")
End If
If InStr(StringToCheck, "ß") Then
StringToCheck = Strings.Replace(StringToCheck, "ß", "ß")
End If
End Sub | |
Re: [VB.net] UTF String ("u00f6") in Latin Char "ö" wandeln | | | Autor: Seek1 | Datum: 04.08.21 11:43 |
| Gerade erst jetzt gesehen, das das zweite Zeichen beim Replace von der Seite geparsed wird :-/
Aber ich hoffe, ihr wisst, was ich meine. | |
Re: [VB.net] UTF String ("u00f6") in Latin Char "ö" wandeln | | | Autor: Seek1 | Datum: 04.08.21 14:30 |
| Sodala. Doch noch hinbekommen.
StringToCheck = HttpUtility.HtmlEncode(StringToCheck)
Trotzdem Danke | |
Re: [VB.net] UTF String ("u00f6") in Latin Char "ö" wandeln | | | Autor: Seek1 | Datum: 24.08.21 17:33 |
| Hallo Franky,
Nochmals eine Frage.
Wie kann ich dann den Latin Text "ö" wieder in einen "\u00f6" Text zurückwandeln?
RegularExpressions.Regex.Escape funktioniert nicht
Beitrag wurde zuletzt am 24.08.21 um 17:34:14 editiert. | |
Re: [VB.net] UTF String ("u00f6") in Latin Char "ö" wandeln | | | Autor: eierlein | Datum: 25.08.21 19:19 |
| Option Strict On
Option Explicit On
Imports System.Text
Module Module1
Sub Main()
Dim t As String = "ABC-ö-n-äää-ggg_üxmö-nn-ß-n-€--xyz"
Debug.Print(t)
Debug.Print(Escape(t))
End Sub
Function Escape(txt As String) As String
Dim z%
Dim tmp$ = txt
For i As Integer = 0 To txt.Length - 1
z = AscW(txt(i))
If z > 127 Then
tmp = tmp.Replace(ChrW(z), "\u" & z.ToString("x4"))
End If
Next
Escape = tmp
End Function
End Module | |
Re: [VB.net] UTF String ("u00f6") in Latin Char "ö" wandeln | | | Autor: Seek1 | Datum: 26.08.21 06:15 |
| WAHNSINN !
Ihr seid meine Helden. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
Neu! sevEingabe 3.0
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|