
Zeichensätze und Umwandlung mit Microsoft Dynamics NAV und MS SQL (3.2.92v)
Die Umwandlung von Zeichen zwischen verschiedenen Systemen, die unterschiedliche Zeichensätze verwenden, ist immer eine große Herausforderung. Wenn alle Systeme einfach nativ mit z. B. UTF8 arbeiten könnten, wäre es viel einfacher. Aber bis es soweit ist, müssen wir (als Anbieter von Datenintegrationslösungen) unser Bestes tun, um dies mit möglichst geringen Auswirkungen für unsere Endnutzer zu handhaben.
Daher freue ich mich, Ihnen eine neue Methode zur Umwandlung von Zeichen zwischen Systemen vorzustellen, die UTF8 unterstützen (wie Salesforce.com), und Systemen, die eine MS-SQL-Datenbank verwenden (wie Microsoft Dynamics NAV, GP, AX).
Intern bei RapidiOnline unterstützen wir schon seit einiger Zeit die Verarbeitung von Texten als UTF8 (Unicode). Der Ausgangspunkt ist weiterhin die Verwendung eines Standardzeichensatzes (z. B. cp850 oder das, was Quell- und Zielsystem verwenden), da nicht alle Systeme Unicode unterstützen und wir nicht immer wissen, welcher Zeichensatz in lokal installierten Systemen verwendet wird. Wir können jedoch einen RapidiOnline-Service so einrichten, dass er intern UTF8 für alle Texte verwendet, die zu/von einem bestimmten System übertragen werden.
Bei Systemen, die UTF8 unterstützen, funktioniert das einwandfrei, da keine Umwandlung stattfindet und wir sicher sind, dass keine Informationen verloren gehen - sodass die Daten korrekt übertragen werden können.
Wenn jedoch Daten zwischen einem System, das UTF8 verwendet, und einem anderen System übertragen werden, das UTF8 oder Unicode nicht unterstützt - was bei den meisten Microsoft-Dynamics-NAV-Installationen immer noch der Fall ist - muss an irgendeiner Stelle zwischen den Systemen eine Umwandlung stattfinden.
Für Systeme, die auf MS-SQL-Server laufen, haben wir jetzt die Möglichkeit, den MS-SQL-Treiber diese Umwandlung übernehmen zu lassen. Wir liefern die Texte im UTF8-Format an den MS-SQL-Treiber und lassen den Treiber die Umwandlung durchführen. Dasselbe gilt beim Lesen von Texten; der MS-SQL-Treiber liefert die Texte im UTF8-Format. Auf diese Weise behalten wir die Daten beim Übertragen im UTF8-Format bei, sodass wir keine Informationen verlieren. Mit anderen Worten: Wir lassen das System, das die Daten in einem anderen Format benötigt (den MS-SQL-Datenbankserver), die Umwandlung durchführen. Da der MS-SQL-Datenbankserver das System des Kunden ist und so eingerichtet ist, dass er den intern in dieser Datenbank verwendeten Zeichensatz kennt und unterstützt, ist er auch das beste System, um eine korrekte Umwandlung der Zeichen vorzunehmen.
Wie Sie den RapidiConnector so einrichten, dass der MS-SQL-Treiber die Umwandlung übernimmt
Um den RapidiConnector so einzurichten, dass der MS-SQL-Treiber die Umwandlung zwischen UTF8 und dem intern in der Datenbank verwendeten Zeichensatz übernimmt, müssen Sie zwei Zeilen (Parameter) zur Datei rapidi.cfg für jeden installierten RapidiConnector (rapidi.exe) hinzufügen (lokal auf Ihrem Server).
Bitte fügen Sie die folgenden Zeilen zur/zu den rapidi.cfg-Datei(en) hinzu:
MSSQLUseUnicodeText : 1
MSSQLUseUnicodeTextVarChar : 1
Beide Parameter sind standardmäßig 0, Sie müssen sie also auf 1 setzen, damit sie wirksam werden. Der Parameter MSSQLUseUnicodeText sorgt dafür, dass wir UTF8 für Felder mit den Typen SQL_WCHAR und SQL_WVARCHAR senden/empfangen (Multibyte-Unicode-Zeichenfelder in MS SQL). Der Parameter MSSQLUseUnicodeTextVarChar macht dasselbe für SQL_CHAR und SQL_VARCHAR (Singlebyte-Zeichenspalten).
So richten Sie Ihren zentralen RapidiOnline-Service für die Verwendung von UTF8-Texten ein
Auf der zentralen Seite müssen wir den RapidiOnline-Service ebenfalls darüber informieren, dass er Texte im UTF8-Format beibehalten und nicht in einen anderen Zeichensatz umwandeln soll. Dies erfolgt ebenfalls mit einem cfg-Dateiparameter wie folgt:
SForceUseUnicodeText : 1
Dieser Parameter ist ebenfalls standardmäßig 0 (muss also auf 1 gesetzt werden, damit er funktioniert). Das Setzen von Parametern in der zentralen cfg-Datei ist derzeit nicht über die Benutzeroberfläche möglich. Daher müssen Sie unseren Support bitten, dies für Sie zu erledigen.
Diese Funktionen wurden in Version 3.2.92v eingeführt. Bitten Sie bei Bedarf bitte unseren Support, Ihnen bei einem Upgrade zu helfen.
UTF8-Texte korrekt verarbeiten und in Formeln als UTF8 erhalten
Bei der Umstellung auf Texte im UTF8-Format intern in RapidiOnline müssen die Funktionen, die Textzeichenfolgen verarbeiten, ebenfalls erkennen, dass eine Zeichenfolge im UTF8-Format vorliegt, und sie entsprechend korrekt behandeln. Ebenso wichtig ist, dass sie das Ergebnis auch als UTF8-codierte Zeichenfolge liefern müssen. Eine Reihe von Funktionen (wie POS, LENGTH und COPY) taten dies bereits, aber einige Funktionen lieferten das Ergebnis noch als normalen Text.
Jetzt funktionieren auch die Funktionen BEFORE, AFTER, LAST, MIDDLE, DEL, POSTDEL mit UTF8-Zeichenfolgen (Unicode) und erhalten die Zeichenfolge für die weitere Verarbeitung als Unicode.
Diese Änderung wurde in Version 3.2.92x eingeführt. Sie müssen sowohl die Zentrale als auch den RapidiConnector auf diese Version aktualisieren. Bitte bitten Sie unseren Support, Ihnen bei Upgrades zu helfen.
Wie immer sind Ihre Kommentare und Fragen sehr willkommen.
Danke
Michael
Ihr Erfolg ist unser Erfolg!
Lernen Sie unser Customer Success Team kennen, das dafür sorgt, dass Sie das Beste aus Ihrem Service herausholen!