Unicode, utf16 nach Byte konvertieren... HILFE
-
Hallo,
ich habe ein für mich schwerwiegendes Problem und suche dringend Hilfe.
Die Situation ist folgende:
Wir haben eine Software, die in VB6 geschrieben ist, und Daten mit ADODB in eine Microsoft SQL-Server Datenbank schreibt (ich glaube Version 2005). Die/der Column/Datentyp ist image.Es wird über rs:
Dim rs As New ADODB.Recordset rs!XY_Daten=ein_vb6_Stringin die Datenbank geschrieben.
Soweit ich weiß und erfragen konnte sind alle Einstellungen default Werte.
Soviel zum Prolog.Wenn ich den Datensatz nun mit C# in einen Bytearray lese und in eine Datei dumpe kriege ich genau doppelt soviele Bytes wie ich bei einer ähnlichen Routine kriege, die in vb6 geschrieben ist.
Jetzt habe ich gelesen, dass das ganze wahrscheinlich in utf16 enkodiert ist.
Leider habe ich keine Ahnung von unicode auf dieser Ebene.
Da die Daten eigentlich "binär" Daten sind, also ich nur ein Byte von 00 bis FF erwarte und brauche bin ich daran auch weniger interessiert.Hier die beiden Anfangsstücke der Dateien im hexadezimal System. Beginnend mit der Datei so wie ich es haben will, also der aus vb6 gewonnen:
01 00 65 00 00 00 00 00 00 00 00 00 00 00 00 20
97 40 00 00 00 00 00 24 97 40 00 00 00 00 00 28Und nun in C#:
01 00 00 00 65 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 20 00
14 20 40 00 00 00 00 00 00 00 00 00 00 00 24 00
14 20 40 00 00 00 00 00 00 00 00 00 00 00 28 00Ich glaube, dass beide Ausschnitte bis auf Kodierung gleich sind. Was ich sehe ist, dass jedes Byte aus dem ersten Ausschnitt genau zwei Bytes im zweiten repräsentiert und dass das zweite Byte in diesem Ausschnitt meist 00 ist. Allerdings wird 97 zu 14 20.
Die Frage ist nun wie ich (am besten einfach
) die "zwei-bytigen" Blöcke in ein Byte von 00 bis FF konvertieren kann.Ob API,C/C++ oder C# Code ist dabei egal. Über jeden anderen Hinweis, der noch so klein sein mag, wäre ich SEHR dankbar.
Probiert habe ich: In C# BitConverter und UTF Encodings, die allerdings scheinbar immer einen unicode-String erwarten und weil das ganze kein String sondern ein "byte-salat" ist die Arbeit verweigern. Bei den Windows-API habe ich erfolglos MultibyBytesToWideChar probiert.
Recht herzlichen Dank
-
Ich glaube nicht, dass Du es hier mit Unicode Problemen zu tun hast, sondern mit einer falschen Datenfeld Bindung.
Lies mal nach wie in C# Blobs begahndelt werden. Solange Du Deine binären Daten als String behandelst liegst Du in jedem Falle falsch.