[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Dec 2016
    Beiträge
    18
    Vielen Dank Herr Fuerchau,

    die 1208 ist eine Vorgabe des "Lieferanten".
    Diese ist nicht so ganz nachvollziehbar, da alle vorhandenen Char-Spalten um den Faktor 4 verlängert wurden.
    Die Zieltabellen sehe ich mit jetzt an.

    Ansonsten wird alles auf SQL und CL umgestellt. Der Aufwand hält sich in Grenzen.

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.767
    Also 1208 als interne Datenbank vorzugeben halte ich für grenzwertig. Dies zeugt davon, dass da jemand keine Ahnung hat.
    Ich kann mir ebensowenig vorstellen, dass ein Lieferant mir vorschreiben kann, wie ich meine Datenhaltung betreiben muss. Internationalität kann ich mit UTF16 praktischer erreichen.
    Für den Datenaustausch kann durchaus UTF8 verwendet werden.

    Selbst bei einem SQL-Server wird UTF8 nicht unterstützt.
    Dafür gibts SQL-allgemeingültig den Typ N[var]Char(n), wobei n die Anzahl Zeichen und nicht Anzahl Bytes ist.
    Jedes System, zumindest, die ich kenne, arbeitet mit dem Typ String in der Verarbeitung.
    Dies betrifft alle aktuellen Programmiersprachen!
    Der Typ String ist DB-entspechend NVARCHAR, mt der CCSID 1200 bzw. in der Nicht-IBM-Welt eben UTF16.
    Daher wäre eher eine Vorgabe von UTF16 als von UTF8 verständlich.
    Anmerkung: Den String mit UTF16 hat Microsoft im Betriebssystem mit Windows 98 eingeführt.

    Betrachte alleine den Aufwand für SQL bzgl. der diversen Abfragemöglichkeiten:
    Jeder "where" auf UTF8 muss zuerst in UTF16 konvertiert werden um damit arbeiten zu können.
    Jeder substr muss in UTF16 konvertiert werden, da sonst nicht mit Position korrekt zugegriffen werden kann.

    Wenn du in RPGLE mit %subst() zugreifst, erhältst du falsche Ergebnisse wenn du nicht vorher auf %UCS2() umwandelst.

    Und zum Schluss die Außenkommunikation:
    Bei ODBC-Zugriffen muss in UTF16 umgewandelt werden um den Typ String erhalten zu können, ansonsten sind es Binär-Daten wo der Empfänger wissen muss, dass er UTF8 noch umwandeln muss.

    Wenn du Dateien austauschst (z.B. CSV, XML, JSON) kannst du eben problemlos für diesen Zweck in 1208 ausgeben. Beim Empfang dann automatisch von 1208 in 1200 konvertieren.

    Auch beim Drucken/PDF-Erstellung kann automatisch in UTF8 konvertiert werden.

    Wenn du per ACS-SQL-Script Daten ausliest, wird per JDBC(=ODBC) auf die DB zugegriffen und alle UTF8-Felder müssen in UTF16 umgewandelt werden, da du sonst nur native UTF8 erhalten würdest.
    Export in Excel erfolgt ebenso im Typ String, also UTF16.

    Du machst es dir insgesamt einfacher, wenn du in Programmen und der Datenbank mit UCS2/1200/UTF16 umgehst, das ist insgesamt weniger anfällig und stabiler und natürlich rein intern.

    Und ich denke, es ist noch nicht zu spät.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. CCSID 273 und CCSID 500
    By jaimosky in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 26-08-20, 11:55
  2. CCSID Umstellung von 65535 auf 273 gefährlich?
    By becama in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 03-09-15, 14:46
  3. ccsid 273 /1153 nach 1208 (Unicode)
    By K_Tippi in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 01-09-15, 11:48
  4. Zeichenumsetzung zwischen CCSID 273 und CCSID 8612 ungültig
    By schatte in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 08-02-11, 18:36
  5. Unicode: UCS-2 (13488) oder UTF-8 (1208)
    By edv90020 in forum NEWSboard Programmierung
    Antworten: 9
    Letzter Beitrag: 13-03-08, 13:52

Tags for this Thread

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •