-
Wirklich ein Dauerthema !
Natürlich gibt es Unicode, aber auch den inzwischen in mehreren Varianten:
UCS-2: 2-Byte-Zeichensatz, ca. 65000 Zeichen
UCS-4: 4-Byte-Zeichensatz (ist allerdings nicht auf der AS/400 verfügbar)
Zusätzlich gibts da noch:
UTF-8: 1-4 Byte pro Zeichen, also variable Breite
UTF-16: 2-4 Byte pro Zeichen
Aber im Terminal (5250) siehts da ganz anders aus:
Standardmäßig arbeitet die Emulation (CA, Telnet, Mocha, usw.) im SBCS-Zeichensatz, d.h. genau 1 Byte pro Zeichen, wobei alle Zeichen EBCDIC < X'40' als Steuerzeichen verloren gehen.
SBCS wird in Sprachräume unterteilt (Latin1-7 und inzwischen mit Varianten).
In diesen Sprachräumen werden variante und nicht variante Zeichen unterschieden:
Nicht variante Zeichen = in allen Sprachräumen identisch
variante Zeichen = können je nach Sprachraum unterschiedlich sein.
Kommen wir nun zum Sprachraum:
In den CCSID's eines Sprachraumes gibt es für jedes Zeichen auch genau ein passendes in ggf. anderem Hexcode, so dass bei der Konvertierung nichts verloren geht.
Konvertiert man allerdings von Sprachraum 1 nach 2 und umgekehrt, bleiben nur die nichtvarianten Zeichen identisch, bei allen anderen kann es zu Verlusten kommen.
Dann gibt es noch den Unterschied zwischen CCSID und CHRID:
CCSID = interne Speicherungsform, also der Hexwert
CHRID = externe Darstellungsform, also das sichtbare Zeichen.
Wie geht die AS/400 damit um (schon mehrfach beschrieben):
Zwischen Datenbank und Job wird eine Codewandlung durchgeführt, sobald beide eine andere CCSID als 65535 haben (HEX). Dazu gehört übrigens auch eine MSGF !
Zwischen Job und Terminal wird nur dann eine Codewandlung durchgeführt, wenn dies per CHRIDCTL auch definiert ist und von den DSPF's, MNU's usw. unterstützt wird.
Ansonsten erfolgt nämlich KEINE Codewandlung.
D.h.: Die CA-Sitzung ist in der Hostcodepage einzustellen, die der Dialogjob verwendet ! Ansonsten kommt es nämlich zum berühmten Datensalat: ö = { u.ä.
Das selbe gilt auch für PRTF's, wobei hier die später zu verwendende CHRID einzustellen ist (bei AFPDS/IPDS auch auf Feldebene möglich). Allerdings sind ggf. WSCST-Objekte zu erstellen, die beim Drucker dann auch eine Codepageumschaltung erreichen.
Die einzig sichere Möglichkeit alle Zeichen für einen Anwender verfügbar zu machen, ist eine Client-Server-Lösung, die die Daten ausschließlich per SQL austauscht, wobei für die AS/400 gilt, dass a) die Daten in UCS-2 (CCSID 13488) gespeichert sind und b) die SQL's auch in UCS-2 ausgetauscht werden (ODBC-Einstellung).
Solange man seine Datenbank immer noch in SBCS speichert und CA-SBCS-Sitzungen verwendet, gibt es ABSOLUT KEINE Möglichkeit, sämtliche Zeichen aller Sprachräume GLEICHZEITIG zu verwenden !
Similar Threads
-
By Waldi2000 in forum NEWSboard Drucker
Antworten: 4
Letzter Beitrag: 11-08-06, 12:26
-
By TARASIK in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 29-06-06, 16:59
-
By y-tom in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 29-05-06, 15:31
-
By DrNick in forum IBM i Hauptforum
Antworten: 8
Letzter Beitrag: 22-02-05, 15:36
-
By Markus Gruebl in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 21-09-01, 10:24
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks