Wie konvertiere ich ein russisch / arabisches Wort (gespeichert als Varbinary in SQL server) mit VFP zu einer anderen Tabelle in SQL server als nvarchar (max)

TABELLEN UND DATATYPEN

DIE DATEN

Die englische Übersetzung für die Beispieldaten ist Alkohol

CODE / THINGS ICH HABE TRIED

Wenn ich die Varbinary-data ohne das 0x-Präfix abfange, verwende ich den folgenden Cast

 SELECT CONVERT(VARCHAR(1000), language18, 2) FROM decl_groups WHERE language1 = 'suiker' 

Allerdings, wenn ich das gleiche exakte Guss in VFP mit einer ODBC-Abfrage mache, bekomme ich ein anderes Ergebnis.

Die ODBC-Abfrage:

 TEXT TO cSQL NOSHOW select CONVERT(VARCHAR(1000), fieldRussian, 2) as alcohol from TablaLanguage where language1 = 'alcohol' ENDTEXT ODBC_Query(cSQL, "test") 

In vfp ist das Ergebnis dann

 'C3A0C3ABC3AAC3AEC3A3C3AEC3ABC3BC20202020202020202020202020202020202020202020202020202020202020202020202020202020202020' 

Frage : Ich habe versucht, alle Art von STRCONV () und SYS (), aber ich scheine es nicht zu funktionieren .. Ich glaube, ich bin nicht einmal die richtige Eingabe zu starten, um SRTCONV () zu beginnen, wie es isn 't das gleiche wie ich in der DB gestohlen habe. Jemand weiß, wie man diese Art von Umwandlung zu tun und könnte mir das erklären, wäre es eine große Hilfe.

In der vorherigen Post, die Sie geschrieben haben, schlug ich Ihnen einen nützlichen Artikel von Rick Strahl ( mit Unicode in Vfp ), in dem er über VPF und Unicode spricht.

Überlegen Sie hier Problem hier ist, wie ich es getriggers habe:

 ** Selection from Binary table ** TEXT TO cSQL NOSHOW select fieldRussian as alcohol from TablaLanguage where language1 = 'alcohol' ENDTEXT CURSORSETPROP("MapBinary",.t.,0) ODBC_Query(cSQL, "cBinaryData") lcBinaryString = cBinaryData.alcohol ** Insert into nVarchar table ** TEXT TO cSQL_Vc NOSHOW INSERT INTO TableString(fieldRussian) VALUES (CAST(?lcBinaryString as nVarchar(MAX))) ENDTEXT ODBC_Query(cSQL_Vc, "cData") 

Einstellen der Eigenschaft des Cursors MapBinary, auf .T. Ich bin die Zuordnung von SQL Varbinary zu VPF Blob Typ.

Wie er sagt, leider Vpf nicht unterstützt Unicode nativ und so, wenn Sie somenthing in UNICODE in einem VPF-Formular anzeigen sollten Sie einige ActiveX-Steuerelement verwenden.

Also nach vielen Recherchen das ist, wie ich es funktionierte. Scheint, wie es nicht möglich ist, ein Varbinary-Feld auf eine andere Tabelle als nvarchar mit nur SQL zu speichern. Also war die Verwendung eines ActiveX Control erforderlich. Eine echte Explosion, warum es so funktioniert, kann ich nicht geben, aber wenn jemand mir helfen könnte, das zu verstehen, ist es immer richtig.

IF! EMPTY (cexport_ingred_decl.declaratie_blob) &&-Feld, das in db als varbinary gespeichert ist und in einer anderen Tabelle als nvarchar gespeichert werden muss TEXT TO cSQL NOSHOW SELECT codepage als codepagina FROM codepages WHERE language =? Ccur_talen.taalnummer
ENDTEXT ODBC_Query (cSQL, 'ccur_codepages')

  SYS(3101, ccur_codepages.codepagina) oform.addobject("oletextbox1","recoletextbox") test = STRCONV(cexport_ingred_decl.declaratie_blob,9) oform.oletextbox1.text = STRCONV(test,11) SYS(3101,0) USE IN ccur_codepages SYS(987,.F.) SYS(3101,65001) *** Convert UTF-8 to Unicode and store as BINARY string!!! pcSavedDescription = STRCONV(oform.oletextbox1.text,12) pcSavedDescription = CREATEBINARY(pcSavedDescription) oform.removeobject("oletextbox1") 

ENDIF

INSERT IN DB AS folgen: INSERT INTO tablename (Feld) VALUES (CAST (? PcSavedDescription als nvarchar (max)))