Fragensteller
Hilfe beim Convertieren (vermute von UTF8)

Frage
-
Hallo VB Spezialisten,
ich möchte einen String von UTF8 Convertieren, ich weis selbst noch nicht genau wie ich dieses Problem beschreiben soll.
Bei mir wird folgender String eingelesen "M%c3%bchlberg+Ges.+%26+Co." dieser sollte aber
"Mühlberg Ges. & Co." sein nun weis ich nicht wie ich das hinbekomme, ich hatte derweil weder mit der Encoding Klasse noch mit der UTF8Encoding Klasse erfolg.folgendes hat zum Beispiel nicht funktioniert
Dim sEncode As String = "M%c3%bchlberg+Ges.+%26+Co." Dim sTest As String Dim code As New UTF8Encoding Dim arString(sEncode.Length) As Char Dim arByte() As Byte arString = sEncode.ToCharArray() arByte = code.GetBytes(arString) sTest = code.GetString(arByte) 'sTest = UTF8Encoding. sTest = code.GetString(arByte) MessageBox.Show(sEncode & vbCrLf & sTest)
Vielen Dank im Voraus
Bitte klärt mich über falsche Fachbegriffe auf Beste Grüße Florian Reiter
- Bearbeitet Florian.Reiter Montag, 10. Juni 2013 14:37
Alle Antworten
-
Hallo, Strings sind in .NET standartmäßig Unicode. Also 2 Bytes pro Zeichen. Woher hast du denn den String und bist du dir sicher, das es die Richtigen Kodierungen sind. Vielleicht hilft dir folgendes Snippet weiter:
http://dotnet-snippets.de/snippet/string-in-byte-array-und-zurueck-wandeln/67Wenn du den String aus einer Datei ausließt, da kann man die Kodierung gleich mit angeben.
<Code:13/> - Koopakiller [kuːpakɪllɐ]
Webseite | Code Beispiele | Facebook | Snippets | Twitter
Wenn die Frage beantwortet ist, dann markiert die hilfreichsten Beiträge als Antwort und bewertet die Beiträge. Danke.
Einen Konverter zwischen C# und VB.NET Code gibt es hier. -
ich arbeite an einem Plugin das in einer Programmumgebung aufgerufen wird und dieser String wird aus einer Eigenschaft aus der Programmumgebung ausgelesen
Bitte klärt mich über falsche Fachbegriffe auf Beste Grüße Florian Reiter
Dim sEncode As String = "M%c3%bchlberg+Ges.+%26+Co." Dim sTest As String Dim codeUTF8 As New UTF8Encoding Dim codeASCII As New ASCIIEncoding Dim codeUNI As New UnicodeEncoding Dim arString(sEncode.Length) As Char Dim arByte() As Byte arString = sEncode.ToCharArray() arByte = codeASCII.GetBytes(arString) sTest = codeUNI.GetString(arByte) 'sTest = UTF8Encoding. 'sTest = code.GetString(arByte) MessageBox.Show(sEncode & vbCrLf & sTest)
so wird das nur chinesisch- Bearbeitet Florian.Reiter Montag, 10. Juni 2013 15:01
-
. Vielleicht hilft dir folgendes Snippet weiter:
http://dotnet-snippets.de/snippet/string-in-byte-array-und-zurueck-wandeln/67
Bitte klärt mich über falsche Fachbegriffe auf Beste Grüße Florian Reiter
-
Hallo Florian,
Wenn ich den String in ein ByteArray gewandelt habe wie bekomme ich daraus wieder ein String?
genau das steht doch im Link von Koopakiller!?
In deinem Fall wäre es aber wohl sinnvoller, HttpUtility.UrlDecode( ... ) zu verwenden.
http://msdn.microsoft.com/de-de/library/adwtk1fy.aspx
Hierfür müsstest Du eine Referenz auf die System.Web.dll in dein Projekt einbinden.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort vorgeschlagen Tom Lambert (Koopakiller)Moderator Montag, 10. Juni 2013 15:11
-
Florian,
das wird schon von Windows 7 und NET 3.5 unterstützt. Die Platformen, die angegeben sind, sind die Platformen welche mindestens vorhanden sein müssen.
PS: Ich habe es auch getestet unter Win7 mit VS 2008 ;-)
Hannes
If you have got questions about this, just ask.
In a perfect world,
users would never enter data in the wrong form,
files they choose to open would always exist
and code would never have bugs.
C# to VB.NET: http://www.developerfusion.com/tools/convert/csharp-to-vb/ -
Also folgendes funktioniert:
Dim s As String = "M%c3%bchlberg+Ges.+%26+Co." Dim r As String = Web.HttpUtility.UrlDecode(s) MsgBox(r)
Hannes
If you have got questions about this, just ask.
In a perfect world,
users would never enter data in the wrong form,
files they choose to open would always exist
and code would never have bugs.
C# to VB.NET: http://www.developerfusion.com/tools/convert/csharp-to-vb/ -
Hallo Florian,
Ich habe es derweil nicht geschafft aber ich kann diese Daten vielleicht anders herausbekommen,
wenn Du uns verraten würdest, woran es bei dir scheitert, könnte man dir sicherlich auch helfen. Poste doch mal bitte die genaue und vollständige Fehlermeldung und die Codezeile, die den Fehler verursacht.
Wie bereits geschrieben, musst Du eine Referenz auf die System.Web.dll in dein Projekt einbinden. Die Klasse HttpUtility ist im System.Web Namespace, der dürfte in deinem Projekt nicht standardmäßig importiert werden. System an sich schon, daher funktioniert der von Heslacher gepostete Aufruf direkt, bei meinem Beispiel müsstest Du entweder per "Imports System.Web" den Namespace importieren oder System.Web.HttpUtility.UrlDecode( ... ) schreiben. (Allerdings ging ich davon aus, dass das klar ist, spät. nach dem Lesen des MSDN Eintrags, den ich verlinkt hatte)
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Ich habe keinen Fehler bekommen, ein String der eingelesen wird falsch angezeigt und ich habe vermutet das es an einer Kodierung liegt. PS ich habe beim Import Fehler gemach :) Vielen Dank für den Hinweis mit den Plattformen das habe ich falsch verstanden.
Vor der Klasse habe ich volgendes angefügt
Imports System.Web
Der Fehler der mir angezeigt wird beim Aufruft von Web.HttpUtility.UrlDecode() wird mir Folgender Fehler angezeigt:
HttpUtility ist kein Member von "Web"
Zu Meiner Neuen Lösung, daran Arbeite ich nocht und diese weicht auch komplett vom Thema ab
Bitte klärt mich über falsche Fachbegriffe auf Beste Grüße Florian Reiter
- Bearbeitet Florian.Reiter Dienstag, 11. Juni 2013 09:48
-
Hallo Florian,
wenn die gezeigte Fehlermeldung erscheint, hast Du die DLL nicht als Verweis in deinem Projekt. Mach das doch bitte mal (hatte ich dir ja oben schon zweimal geschrieben), dann sollte das auch problemlos funktionieren.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Liebe Spzialisten
bei mir wird der Verweis nicht angezeigt
Ich hatte bereits alle Verweise mit System.Web eingefügt.ich möchte jetzt aber niemanden aufhalten, ich habe die gesuchten Inhalte anders erreicht.
Dass kann ich euch leider nicht ganz erklären da ich an einem Plugin für ein Programm arbeite und ich da benutztdefinierte Klassen benutzen muss.
Vielen Dank für die Hilfe und die Neuen Sachen die ich hier wieder gelernt habe.
Bitte klärt mich über falsche Fachbegriffe auf Beste Grüße Florian Reiter
- Bearbeitet Florian.Reiter Dienstag, 11. Juni 2013 12:22
-
Florian,
wenn Du auf Dein Projekt im Projektexplorer klickst und dann rechte Maustaste Eigenschaften kannst Du auf dem Reiter Verweise im unteren Teil der Seite System.Web aktivieren.
Hannes
If you have got questions about this, just ask.
In a perfect world,
users would never enter data in the wrong form,
files they choose to open would always exist
and code would never have bugs.
C# to VB.NET: http://www.developerfusion.com/tools/convert/csharp-to-vb/ -
Hallo Hannes,
wenn Du auf Dein Projekt im Projektexplorer klickst und dann rechte Maustaste Eigenschaften kannst Du auf dem Reiter Verweise im unteren Teil der Seite System.Web aktivieren.
das hat aber nichts mit dem Verweis zu tun, sondern nur mit dem Import des Namespace.
@Florian: Klick bitte auf den Spaltenheader "Komponentenname", dann werden die Elemente nach dem Namen sortiert. In der Standardansicht ist das eine andere Sortierung, da musst Du dann weitersuchen, irgendwo recht weit unten ist dann auch System.Web zu finden (nur System.Web, die anderen Komponenten wie System.Web.Entity, ... bringen da nichts)
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Stefan,
da hast Du natürlich Recht. Ich war nur ein wenig irritiert, da ich (obwohl ich die Liste sortiert hatte ) System.Web auch nicht finden konnte. Allerdings hatte mein Testprojekt auch das Zielframework 4.0 Client Profile unter welchem System.Web als Verweis nicht auftaucht. Ich habe in letzter Zeit einfach zuviel mit Java/Netbeans gemacht ;-)
Hannes
If you have got questions about this, just ask.
In a perfect world,
users would never enter data in the wrong form,
files they choose to open would always exist
and code would never have bugs.
C# to VB.NET: http://www.developerfusion.com/tools/convert/csharp-to-vb/