Encoding

M Musiol

Grünschnabel
Hallo!

Ich will ein Bytearray in einen String verwandeln, um ihn über ein Interface verschicken zu können.
Dafür benutze ich:

Code:
string=strconv(system.text.unicodeEncoding.unicode.getstring(Bytearray),0)

Im Bytearray können Werte zwischen 0 und 255 stehen. Im Bereich 128 bis 159 übersetzt diese Funktion falsch, d.h. es werden falsche Werte in den String geschrieben, z.B. bei byte 128 steht im string 63.

In der Unicodetabelle stehen die Werte 128 bis 159 für Steuerzeichen. Wie bekomme ich VB dazu, nur die ByteWerte zu übersetzen, ohne sich um die Steuerung zu kümmern?

Weiß jemand, vielleicht eine andere Art den String zusammenzustellen?

Ich habe schon den Stringbuilder probiert, aber beim austauschen einzelner bytes ( Änderung der Steuerbefehle ) kommt eine Fehlermeldung wegen Verlassen des Parameterbereiches.

Der Befehl hier:
Code:
dim sb as new system.text.stringbuilder
sb.capacity(100)
sb.append("0",100)
 und bei Änderung der Steuerwerte:
sb.replace(alterwert( as char ),neuerwert ( as char ), stelleimarray( as integer ),1)
string=sb.tostring
Gruß, Matthias

P.S. Die google-Suche war ohne Erfolg und sehr ausführlich!
 
Zuletzt bearbeitet:
@M Musiol: Bitte verwende bei Codeteilen die Codetags (z.B. für VB.NET [vbnet.] und [/vbnet.]; ohne den Punkt in der Klammer, den hab ich gemacht damit du die Tags siehst, siehe auch hier.)

Desweiteren gibt es für .NET-Fragen ein eigenes .NET-Forum, da sich die Syntax doch etwas zu der von VB6 unterscheidet. Bitte poste .NET-Fragen dann dort rein.

@Mods: Bitte den Thread verschieben.


Der Doc!
 
Hallo!

Auch wenn hier immer noch falsch sein sollte:

Die Lösung liegt wohl in der Übersetzung der unicode-Tabelle. Es muß die im eigenen System eingestellten Werte. Leider kann ich nicht sagen, warum die Werte überhaupt unterschiedlich interpretiert werden, aber richtig muß (1.):
Code:
string = strconv(system.text.unicodeEncoding.unicode.getstring(Bytearray),0) 
string = strconv(system.text.unicodeEncoding.default.getstring(Bytearray),0)
(2.)heißen.
Nur dann wird die Übersetzung richtig vollzogen und es kommt zu keinen Störungen mehr.

mfG MM
 
Zurück