UTF-8 EBCDIC en Java
Notre exigence est d'envoyer du texte EBCDIC de l'ordinateur central. Nous avons des caractères chinois ainsi format UTF8.
Alors, est-il un moyen de convertir les caractères UTF-8 en EBCDIC?
Grâce,
Raj Mohan
Serait UTF-8 à la conversion EBCDIC être sans perte? C'est, pouvez-vous transformer en arrière et obtenir le même EBCDIC octets à chaque fois?
OriginalL'auteur | 2009-04-21
Vous devez vous connecter pour publier un commentaire.
En supposant que votre système cible est un mainframe IBM ou de milieu de gamme, il a en charge l'intégralité de l'EBCDIC codages construit dans une JVM que les codages nommé CPxxxx, correspondant à l'IBM CCSID (CP représente le code de la page). Vous aurez besoin de faire la traduction sur le côté hôte depuis le côté client n'aura pas le codage de soutien.
Depuis Unicode est DBCS et plus, et prend en charge tous les caractères, vous serez probablement en ciblant de multiples EBCDIC codages; alors vous devrez probablement configurer ces codages d'une certaine façon. Essayez d'avoir votre client Unicode (UTF-8, UTF-16, etc), avec la traduction fait que des données arrivent sur l'hôte et/ou qui quitte le système hôte.
Autres que de les obliger à faire des traductions côté hôte, la mécanique est la même que n'importe quel Java traduction; par exemple, la nouvelle Chaîne de caractères(octets,encodage) et de la Chaîne.getBytes(encodage), et les différents NIO et écrivain classes. Il n'y a vraiment pas de la magie c'est pas différent de la traduction entre, disons, l'ISO-8859-x et Unicode, ou de toute autre SBCS (ou limité sur deux octets DBCS).
Par exemple:
Vous pouvez trouver plus d'informations sur IBM documentation du site web.
OriginalL'auteur Lawrence Dol
EBCDIC a beaucoup de 8 Bits pages de code. Beaucoup d'entre eux sont pris en charge par la machine virtuelle. Jetez un oeil à
Charset.availableCharsets().keySet()
, EBCDIC pages sont nommésIBM...
(il y a des alias commecp500
pourIBM500
comme vous pouvez le voir parCharset.forName("IBM500").aliases()
).Il y a deux problèmes:
Pour la première, avoir un regard sur cette approche. Pour la deuxième, avoir un essai sur la cible désirée de l'exécution 😉
IBM*
sont EBCDIC. Par exemple, IBM850 est le standard de codes utilisés dans les états-UNIS et de l'europe occidentale versions de Windows dans l'invite de commande.OriginalL'auteur Arne Burmeister
Vous pouvez toujours faire usage de l'IBM boîte à outils pour Java (JTOpen), en particulier le
com.ibm.as400.access.AS400Text
classe dans le jt400.jar.Il va comme suit:
J'ai utilisé le code-page 420 et de ses correspondants de java représentation de l'encodage CP420, ce code de page est utilisé pour le texte arabe, donc, vous devez choisir celle qui convient à la page de code pour le texte Chinois.
OriginalL'auteur Ahmad Y. Saleh
Pour le milieu de gamme as/400 (IBM i ces jours-ci) le meilleur pari est d'utiliser le Java IBM Toolkit (jt400.jar), qui fait toutes ces choses d'une manière transparente (peut-être un peu nuancé).
Veuillez noter qu'à l'intérieur de Java, un caractère est une valeur 16 bits, pas de l'UTF-8 (c'est un encodage).
OriginalL'auteur Thorbjørn Ravn Andersen