cs_Cako19
Messages postés56Date d'inscriptionmardi 4 février 2003StatutMembreDernière intervention 5 décembre 2005
-
16 déc. 2004 à 14:38
Quazar
Messages postés84Date d'inscriptionmardi 19 octobre 2004StatutMembreDernière intervention 6 octobre 2006
-
17 déc. 2004 à 10:48
Bonjour,
J'aurais besoin de convertir une chaine de caracteres de l'encoding UTF-16 à UTF-8.
Quelqu'un saurait si une fonction java existe pour effectuer cette transformation ?
Quazar
Messages postés84Date d'inscriptionmardi 19 octobre 2004StatutMembreDernière intervention 6 octobre 2006 16 déc. 2004 à 17:41
Salut,
Les chars sont effectivement codé sur 16 bits, pour n'en récupérer que 8 il suffit de faire un masque et tu devrais retomber sur tes pattes:
String stMot = "Mot";
int iCodePoint = stMot.charAt(0) & 0xff;
Les poids ne te serve effectivement a rien si tu ne traite que des caractere occidentaux. Pour plus d'info, je te conseille je te conseille de jeter un oeil sur le site d'Unicode: http://www.unicode.org/charts/.
Si tu lis les infos depuis un fichier, utilise un DataInputStream, il y a des methodes qui lise directement uen UTF 8 ou en unsigned byte. Ce qui te fera peut etre gagner du temps.
Quazar
Messages postés84Date d'inscriptionmardi 19 octobre 2004StatutMembreDernière intervention 6 octobre 2006 17 déc. 2004 à 08:58
Ah ah.. excuse, autant pour moi... j avais pas bien compris... j ete plongé dans mon propre code... milles excuses :big)
Par contre pour ton soucis, je peux te conseiller de jeter un coup d'oeil sur la doc des DataInputStream et DataOutputStream, tu pourras peut etre y trouver ton bonheur.
cs_Cako19
Messages postés56Date d'inscriptionmardi 4 février 2003StatutMembreDernière intervention 5 décembre 2005 17 déc. 2004 à 10:24
J'ai fait un copier/coller ...
Mon compilateur ne connait pas la méthode codePointAt. Je ne la retrouve pas, ni rien de semblable dans les méthodes de StringBuffer.
Pourrais tu me dire où elle se trouve stp ?
Quazar
Messages postés84Date d'inscriptionmardi 19 octobre 2004StatutMembreDernière intervention 6 octobre 2006 17 déc. 2004 à 10:48
Excuse moi. Il s'agit d'une fonction disponible dans le JRE 1.5 qui est sorti debut automne. Le Codepoint est une nouvelle fonctionnalté, il permlmet de repéré les caractères dans une chaine par sont numero unicode, ca allege enormement le code.
Pour le code que je t ai filé, tu peux supprimer, ca n'a pas grde importance.
Par contre, rien que pour cette fonctionnalité je te conseille de passer en 1.5, c'est pratique comme tout... je sais meme plus comment je faisais avant.
Je te remet le code sans le codepoint (copier-coller):
public static void main(String[] args) {
try{
StringBuffer stIn = new StringBuffer("été");
for(int i = 0; i < stIn.length(); i++)
System.out.println(i + "\t" + stIn.charAt(i));
System.out.println();
System.out.println("- UTF -");
ByteArrayOutputStream struct = new ByteArrayOutputStream(stIn.length());