Die Verkettungsrichtung ändert die Richtung, wenn arabischer Text verwendet wirdliebe Gemeindemitglieder,
Ich habe drei Spalten – eine zeichenhafte und zwei numerische –, die ich wie im Bild und im Anhang zu einer langen Zeichenfolge verketten möchte.
Wenn das Zeichen auf Arabisch geschrieben ist, sind die Verkettungsergebnisse aus irgendeinem Grund in der falschen Reihenfolge.
"('" || :word || "', " || Char( :abc ) || ", " || Char( :def ) || ")"

Dies ist für meine Anwendung nicht gut, da ich die Spalte im nächsten Schritt als Matrix exportiere, um sie in SQL zu verwenden, und der gesamte Prozess fehlschlägt.
vielen Dank für deinen Beitrag.
Automatisierung und SkripterstellungWindowsBetreff: Verkettungsrichtung ändert die Richtung, wenn arabischer Text verwendet wirdSehr interessant.Ich bin mir sicher, dass es mit der arabischen Schreibweise von rechts nach links zu tun hat.Wenn man also etwas nach einem arabischen Wort verkettet, würde man es links vom Wort platzieren.Ich schlage vor, dass Sie sich an den JMP-Support wenden, um Hilfe zu erhalten.
Betreff: Verkettungsrichtung ändert die Richtung, wenn arabischer Text verwendet wirdJa. Ich kenne die Regeln nicht, aber
x="واتساب ويب";
write("a"||x||",b")
/*:
aواتساب ويب,b
vergleichen mit
x="واتساب ويب";
write("a"||x||",3")
/*:
aواتساب ويب,3
Charakter 3 gegen Charakter b.
Betreff: Verkettungsrichtung ändert die Richtung, wenn arabischer Text verwendet wirdEs scheint also, dass die verkettete Zeichenfolge (intern) Ihren Erwartungen entspricht, die Darstellung jedoch anders ist als erwartet.

Ich habe keine Antwort, vielleicht ist jemand anderes mit den erwarteten Verhaltensweisen von rechts nach links vertraut.
Betreff: Verkettungsrichtung ändert die Richtung, wenn arabischer Text verwendet wirdNicht sicher. Möglicherweise müssen Sie nichts ändern. Oder Sie müssen es möglicherweise verwenden
https://en.wikipedia.org/wiki/Left-to-right_mark
und vielleicht https://en.wikipedia.org/wiki/Right-to-left_mark (aber ich denke nicht.)
Zum Beispiel
write(x);
write("\!n");
write("1",x,"\!U200E2");
/*:
واتساب ويب
1واتساب ويب2
\!U200E ist JMPs Darstellung der Unicode-Links-nach-Rechts-Markierung. Sie würden dieses Zeichen zur Zeichenfolge hinzufügen, damit sie wie erwartet gedruckt wird, aber spätere Zeichenfolgenvergleiche werden dadurch durcheinander gebracht (vielleicht ... wer weiß, ohne es zu testen ...)
Ich kenne die Regeln immer noch nicht. Interessiert mich auch die Antwort!
Bearbeiten: Als ich sagte „Sie müssen möglicherweise nichts ändern“, meinte ich, dass einige Parser mit dem Text vollkommen zufrieden sein könnten, der wahrscheinlich genau in der Zeichenreihenfolge angeordnet ist, die Sie im Speicher benötigen. Ich weiß, dass es bei der Anzeige nicht in der richtigen Reihenfolge aussieht, aber der SQL-Parser sieht es möglicherweise nicht so.
mehr von https://en.wikipedia.org/wiki/Bidirektionaler_text --
Unicode-Bidi-Unterstützung
Der Unicode-Standard verlangt, dass Zeichen „logisch“ angeordnet werden, dh in der Reihenfolge, in der sie interpretiert werden sollen, und nicht „visuell“, in der Reihenfolge, in der sie erscheinen. Diese Unterscheidung ist für die Bidi-Unterstützung relevant, da bei jedem Bidi-Übergang die visuelle Darstellung nicht mehr die „logische“ ist. Um Bidi-Unterstützung zu bieten, schreibt Unicode daher einen Algorithmus vor, der die logische Folge von Zeichen in die richtige visuelle Darstellung umwandelt. Zu diesem Zweck unterteilt der Unicode-Kodierungsstandard alle seine Zeichen in einen von vier Typen: „stark“, „schwach“, „neutral“ und „explizite Formatierung“.
Betreff: Verkettungsrichtung ändert die Richtung, wenn arabischer Text verwendet wirdIch habe dem Support als geschrieben @txnelson empfohlen. Ich hoffe, bald von ihnen zu hören.
Was @Craige_Hales schrieb, ließ mich denken, dass der Fehler in meinem Fall von der Reihenfolge abhängt, also habe ich versucht, die Verkettungsreihenfolge wie folgt zu ändern, und es sieht so aus, als ob es funktioniert, aber ich bin mir immer noch nicht sicher, warum und ob es robust ist.

Betreff: Verkettungsrichtung ändert die Richtung, wenn arabischer Text verwendet wirdDieses Problem bleibt auch bestehen, wenn ich versuche, die Spalte als Liste abzurufen. In diesem Fall ist die Zeichenfolge auf eine andere Weise verdreht.

Betreff: Verkettungsrichtung ändert die Richtung, wenn arabischer Text verwendet wirdBitte werfen Sie einen Blick auf die zusätzlichen Spalten der beigefügten Tabelle und die Formeln, mit denen sie erstellt werden.
Table with formulas to parse the Right to Left stringTable with formulas to parse the Right to Left stringTable with formulas to parse the Right to Left stringTable with formulas to parse the Right to Left stringTable with formulas to parse the Right to Left stringTable with formulas to parse the Right to Left stringTable with formulas to parse the Right to Left stringTable with formulas to parse the Right to Left stringTable with formulas to parse the Right to Left stringTable with formulas to parse the Right to Left stringTable with formulas to parse the Right to Left stringTable with formulas to parse the Right to Left stringTable with formulas to parse the Right to Left stringTable with formulas to parse the Right to Left stringTable with formulas to parse the Right to Left stringTable with formulas to parse the Right to Left stringTable with formulas to parse the Right to Left stringTable with formulas to parse the Right to Left stringTabelle mit Formeln zum Parsen der Zeichenfolge „Rechts nach links“.
Die ersten vier Spalten sind die Originale. quotes_and_parens verwendet replacement(), um den Apostroph in ein Anführungszeichen und die Klammern in geschweifte Klammern umzuwandeln. Die Analysespalte zeigt die Ausgabe der Analyse von quotes_and_parens. Zu diesem Zeitpunkt sieht es immer noch hoffnungslos aus, aber schauen Sie sich Parse 1,2,3 an: Sie extrahieren die Elemente 1, 2 und 3 aus der erstellten Listenparse. in der Reihenfolge, die Sinn macht .
Ihre Lösung, bei der Sie die RtoL-Zeichenfolge an letzter Stelle platzieren, funktioniert genauso, ist ebenso robust und hat den Vorteil, dass sie korrekt angezeigt wird.
Das falsch angezeigte Ergebnis ist auf die Unicode-Regeln zum Mischen und Abgleichen von RtoL- und LtoR-Zeichenfolgen zurückzuführen. Der Fehler tritt nur auf, wenn die Zeichenfolge angezeigt wird. Die interne Zeichenfolge ist korrekt und das Parsen ist wahrscheinlich in Ordnung. Wenn SQL es nicht analysieren kann, scheint das seltsam und schwer zu erklären, vorausgesetzt, dass SQL andernfalls Unicode unterstützt.
Ich fand das auch verwirrend, insbesondere wenn ich versuchte, Text auszuwählen, bei dem Teile der Auswahl von anderen Teilen umgekehrt waren. Als mir klar wurde, dass die Umkehrung zum Zeitpunkt der Präsentation erfolgt, ergab es mehr Sinn.
Betreff: Verkettungsrichtung ändert die Richtung, wenn arabischer Text verwendet wirdVielen Dank @Craige_Hales
NICHT WYSIWYG zu sein, ist sehr kontraintuitiv. Das Erhalten der Spalte als Liste war auch ein Versuch zu bestätigen, dass die endgültige Zeichenfolge in SQL analysiert werden kann, wie es für die Akzeptanz erforderlich ist. Optisch sah es nicht so aus, als ob es funktionieren würde, aber es funktionierte!
Betreff: Verkettungsrichtung ändert die Richtung, wenn arabischer Text verwendet wirdIch habe die folgende Nachricht vom JMP-Support erhalten:
Zitatanfang „
Hallo Ron,
Ich habe Ihr Problem mit dem Entwickler besprochen, der für die Zeichenfolgenverkettung verantwortlich ist.Wenn Sie sich die Unicode-Zeichen ansehen, die die verkettete Zeichenfolge definieren, werden sie in der von Ihnen angegebenen Reihenfolge verkettet.Es gibt jedoch bidirektionale Unicode-Textregeln für die Anzeige von Zeichenfolgen.Es ist die Anzeige der Saiten, die Ihre unerwartete Richtung anzeigt.Intern wird die Zeichenfolge wie erwartet gespeichert.Hier ist ein kurzes JSL-Beispiel, das der Entwickler zur Veranschaulichung bereitgestellt hat.
x = "?";
y = "0";
xy = x || y;
Show(xy, Hex(xy, "utf-16be"));
// xy = "?0";
// Hex(xy, "utf-16be") = "06280030";
U+0030 ist die Nullstelle und kommt an zweiter Stelle.
Ich habe die Zeichenfolge auch überprüft, indem ich die Zeichenfolge als Textdatei gespeichert und in einem Texteditor eines Drittanbieters geöffnet habe, der über einen ASCII -> HEX-Konverter verfügt.Ein Screenshot der Ergebnisse finden Sie unten.Nach der Konvertierung in Hex habe ich die Leerzeichen-, Komma- und Klammercodes erneut durch ihre Zeichen ersetzt, damit sie leichter zu verstehen sind.Beachten Sie erwartungsgemäß die Codes für 0 am Ende der Hex-Darstellung.

Der Entwickler stellte auch eine zur Verfügung Link zu einem Blog Dies kann Ihnen bei der Bewältigung dieses Problems in Ihrer Datenbankabfrage helfen.
" Ende des Zitats
Daher denke ich, dass wir jetzt eine umfassende Antwort haben, die mit dem übereinstimmt, was @Craige_Hales empfohlen.