OVH Cloud OVH Cloud

extended ascii character problem

2 réponses
Avatar
Xavier Frisaye
Je travaille sous windows xp sp1 avec le jdk 1.4.2_01 et j'ai un problème de
conversion de caractères.
J'aimerais convertir un tableau d'octet d'ascii etendu (éèà,...) en unicode.
J'ai essayé d'utiliser la class java Charset mais il semblerait qu'il n'y
ait pas de charset supportant l'ascii étendu...
Voici mon morceau de code :

byte bytes[] = {(byte) 133};//à character
ByteBuffer byteBuffer;

Iterator charsets = Charset.availableCharsets().keySet().iterator();
while( charsets.hasNext() )
{
Charset charset = (Charset)
Charset.availableCharsets().get(charsets.next());
CharsetDecoder decoder = charset.newDecoder();
CharsetEncoder encoder = charset.newEncoder();
System.out.println( charset.displayName() );
byteBuffer = ByteBuffer.wrap( bytes );
try
{
CharBuffer charBuffer = decoder.decode(byteBuffer);
System.out.println( charBuffer );
}
catch(Exception e )
{

}
}

Y'a-t-il qqn qui a déjà rencontré ce problème?

Merci d'avance

Xavier Frisaye

2 réponses

Avatar
Manuel Deruisseaux
Salut Xavier,

Peut-être n'utilises tu pas le JRE International ?

Manu

"Xavier Frisaye" wrote in message
news:3fd700fc$0$2852$
Je travaille sous windows xp sp1 avec le jdk 1.4.2_01 et j'ai un problème
de

conversion de caractères.
J'aimerais convertir un tableau d'octet d'ascii etendu (éèà,...) en
unicode.

J'ai essayé d'utiliser la class java Charset mais il semblerait qu'il n'y
ait pas de charset supportant l'ascii étendu...
Voici mon morceau de code :

byte bytes[] = {(byte) 133};//à character
ByteBuffer byteBuffer;

Iterator charsets = Charset.availableCharsets().keySet().iterator();
while( charsets.hasNext() )
{
Charset charset = (Charset)
Charset.availableCharsets().get(charsets.next());
CharsetDecoder decoder = charset.newDecoder();
CharsetEncoder encoder = charset.newEncoder();
System.out.println( charset.displayName() );
byteBuffer = ByteBuffer.wrap( bytes );
try
{
CharBuffer charBuffer = decoder.decode(byteBuffer);
System.out.println( charBuffer );
}
catch(Exception e )
{

}
}

Y'a-t-il qqn qui a déjà rencontré ce problème?

Merci d'avance

Xavier Frisaye




Avatar
Xavier Frisaye
J'ai trouvé la solution,
il suffit d'utiliser le charset cp437 qui n'est pas présent dans les
charsets du package nio mais qui est utilisable ailleurs, j'ai donc créer
une string en lui passant le charset en question dans le constructeur :

String str = new String( bytes, "cp437" );

"Xavier Frisaye" a écrit dans le message de news:
3fd700fc$0$2852$
Je travaille sous windows xp sp1 avec le jdk 1.4.2_01 et j'ai un problème
de

conversion de caractères.
J'aimerais convertir un tableau d'octet d'ascii etendu (éèà,...) en
unicode.

J'ai essayé d'utiliser la class java Charset mais il semblerait qu'il n'y
ait pas de charset supportant l'ascii étendu...
Voici mon morceau de code :

byte bytes[] = {(byte) 133};//à character
ByteBuffer byteBuffer;

Iterator charsets = Charset.availableCharsets().keySet().iterator();
while( charsets.hasNext() )
{
Charset charset = (Charset)
Charset.availableCharsets().get(charsets.next());
CharsetDecoder decoder = charset.newDecoder();
CharsetEncoder encoder = charset.newEncoder();
System.out.println( charset.displayName() );
byteBuffer = ByteBuffer.wrap( bytes );
try
{
CharBuffer charBuffer = decoder.decode(byteBuffer);
System.out.println( charBuffer );
}
catch(Exception e )
{

}
}

Y'a-t-il qqn qui a déjà rencontré ce problème?

Merci d'avance

Xavier Frisaye