vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

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?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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-

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: [VB.net] UTF String ("u00f6") in Latin Char "ö" wandeln 
Autor: Seek1
Datum: 26.08.21 06:15

WAHNSINN !
Ihr seid meine Helden.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel