Serveur: IBM i Series AS/400 exécutant DB2Comment convertir le jeu de caractères en unicode dans db2 requête
Client: Linux en utilisant unixodbc
J'ai une table dans une base de données DB2 avec une colonne de données à l'aide CCSID 836 (EBCDIC chinois simplifié). Je veux obtenir des résultats en UTF-16 pour qu'ils fonctionnent sur d'autres systèmes, mais j'ai du mal à trouver la bonne façon de convertir.
Lorsque je tente:
SELECT CAST(MYCOLNAME AS VARCHAR(100) CCSID 13491) FROM MY.TABLE
Je reçois l'erreur:
SQL State: 22522
Vendor Code: -189
Message: [SQL0189] Coded Character Set Identifier 13491 not valid. Cause . . . . . : Coded Character Set Identifier (CCSID) 13491 is not valid for one of the following reasons: -- The CCSID is not EBCDIC. -- The CCSID is not supported by the system. -- The CCSID is not vaid for the data type. -- If the CCSID is specified for graphic data, then the CCSID must be a DBCS CCSID. -- If the CCSID is specified for UCS-2 or UTF-16 data, then the CCSID must be a UCS-2 or UTF-16 CCSID. -- If the CCSID is specified for XML data, then the CCSID must be SBCS or Unicode. It must not be DBCS or 65545.
Comment puis-je convertir les données de CCSID 836 en UTF-16? J'ai également échoué avec UNICODE_STR()
.
Veuillez modifier votre question pour indiquer le nom du client DB2 et la version/le groupe de correctifs installés sur Linux, ainsi que le nom et la version de la distribution Linux. Veuillez également spécifier les paramètres régionaux que vous avez installés sous Linux (sortie de 'locale -a') et qui est le bon pour unixodbc (valeur de $ LANG). – mao