[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jun 2006
    Beiträge
    348

    Zeichenumsetzung zwischen CCSID 273 und CCSID 8612 ungültig

    Hallo *ALL,

    ich habe hier eine Tabelle mit Character Feldern, die mit der CCSID 273 angelegt wurden.

    Mein Job hat die Codepage 8612 (Arabic). Damit möchte ich nun auf die oben genannte Tabelle SQL-Abfragen ausführen. Sobald ich jedoch ein Alpha-Feld auf SPACE (where xxx = ' ') abfrage, bekomme ich folgende Fehlermeldung:
    Code:
     Nachrichten-ID . . . . :   SQL0332       Bewertung  . . . . . . :   30         
     Nachrichtenart . . . . :   Diagnose                                            
                                                                                    
     Nachricht . . . :   Zeichenumsetzung zwischen CCSID 273 und CCSID 8612         
       ungültig.                                                                    
     Ursache  . . . . :  Es wurde versucht, eine Zeichen- oder Grafikumsetzung für  
       nicht verträgliche Daten durchzuführen. Eine Umsetzung zwischen CCSID 273    
       und CCSID 8612 ist nicht definiert.                                          
         Ist eine CCSID 65535, ist die andere CCSID eine Grafik-CCSID. Die          
       Umsetzung zwischen der CCSID 65535 und einer Grafik-CCSID ist nicht          
       definiert.                                                                   
         Handelt es sich um eine Anweisung CONNECT, ist die Umsetzung zwischen der  
       Standard-SBCS-CCSID des Anwendungs-Requesters und der SBCS-CCSID des         
       Anwendungsserver nicht definiert. Ist die zweite CCSID 0, wurde die          
       Standard-SBCS-CCSID des Anwendungsservers nicht zurückgegeben. Ein           
       Anwendungsserver, der kein System i-Anwendungsserver ist, unterstützt die    
       CCSID 65535 möglicherweise nicht.                                            
     Fehlerbeseitigung:  Sicherstellen, dass jeder Zeichen- oder Grafikvergleich,   
       jede Zeichen- oder Grafikverknüpfung und jede Zeichen- oder Grafikzuordnung  
       zwischen Spalten oder Host-Variablen erfolgt, die verträgliche CCSID-Werte   
       haben.                                                                       
         Handelt es sich um eine Anweisung CONNECT, entweder die SBCS-CCSID des     
       Anwendungs-Requesters oder des Anwendungsservers ändern, damit die           
       Umsetzung zwischen den CCSID-Werten definiert ist.
    Wenn ich die genannten Character Felder auf UCS-2 (CCSID 13488) umstelle, funktioniert alles.

    Gibt es eine Lösung für dieses Problem, ohne alle Felder auf UCS-2 umstellen zu müssen?

    Gruß
    Matthias

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Nun ja, im Prinzip hast du die Lösung ja gefunden.
    Die CCSID's sind leider nicht kompatibel.
    Du musst also
    a) die Tabelle auf UCS2 ändern
    b) im SQL auf UCS2 casten

    zu b)

    cast(feld as vargraphic(nnn) ccsid 13488)

    Bedenke aber, dass beim Umwandeln in deine Programmvariable, sollte diese nicht mit "C" definiert sein, Umwandlungsverluste (z.B. Umlaute o.ä.) auftreten.

    Auch das Schreiben in die DB mit inkompatiblen CCSID's geh nur über UCS2, ohne Verluste auch nur, wenn die Tabelle UCS2 hat.

    Das Casten auf Key-Felder zwingt SQL dann auch immer zu einem Table-Scan !!!
    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

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Hast Du versucht auf die Tabelle eine View zu legen, in der die alphanumerischen Felder in Unicode konvertiert werden und anschließend diese View zu verwenden?

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  4. #4
    Registriert seit
    Nov 2003
    Beiträge
    2.307
    Mal so versuchen:

    PHP-Code:
    SELECT FROM Datei WHERE HEX(Feld) = HEX(SPACE(LENGTH(Feld))) 

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Zitat Zitat von Pikachu Beitrag anzeigen
    Mal so versuchen:

    PHP-Code:
    SELECT FROM Datei WHERE HEX(Feld) = HEX(SPACE(LENGTH(Feld))) 
    Die Where-Abfrage ist nicht das eigentlich Problem sondern der anschließende Fetch der Daten.
    Beim Lesen der Daten wird eine Umwandlung zwischen den CCSID's abgelehnt.

    Wenn der SQL mit Hostvariablen ausgeführt wird, muss der Inhalt von der Job-CCSID in die DB-CCSID gewandelt werden.
    Auch dies scheitert aus den selben Gründen.
    Es funktioniert nur mit UCS2, wenn die Hostvariablen dann auch UCS2 (Typ C) sind.
    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

  6. #6
    Registriert seit
    Jun 2006
    Beiträge
    348
    Nach den Antworten schließe ich, dass eine Umstellung der Felder auf UCS-2 die sauberste Möglichkeit für dieses Problem ist (gerade wegen der Performance).

    Danke für eure Hilfe!

    Gruß
    Matthias

Similar Threads

  1. Konvertierung nach Graphic --> CCSID Problem
    By codierknecht in forum NEWSboard SAP
    Antworten: 32
    Letzter Beitrag: 09-02-18, 13:00
  2. Keine Zeichenumsetzung zu CCSID 13488
    By ah1960 in forum NEWSboard Programmierung
    Antworten: 10
    Letzter Beitrag: 30-06-08, 15:03
  3. CCSID ändern
    By schaaf in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 04-05-06, 11:18
  4. CPYTOIMPF und CCSID
    By Muchi in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 21-04-06, 13:54
  5. CCSID eines Files
    By Binford in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 07-03-06, 08:58

Berechtigungen

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