String to UNICODE - Java - Programmation
Marsh Posté le 23-10-2002 à 11:40:16
T'es sur que c pas plutot "E800" au lieu de "00E8" ?
Marsh Posté le 23-10-2002 à 11:55:00
J'ai pas mal galéré sur Unicode, et j'ai toujours vu les caractères Unicode codés de la sorte : E800
A moins que ce soit un format spécial de l'unicode (dont je suis loin de saisir toutes les subtilités : entre Unicode, UTF-8 et autres, c un beau foutoir !) ?
Marsh Posté le 23-10-2002 à 11:56:38
Harkonnen> Problème d'"Endianness"...
A ma connaissance, rien ne fait ça, parce que peu de gens en ont l'utilité (pour s'affranchir des '\0', l'UTF-8 marche très bien).
Mais des convertisseurs int vers chaine hexa, c'est assez classique. Il suffit de prendre chaque caractère, et d'appliquer un truc du genre
Code :
|
. On concatène chaque chaine obtenue dans un StringBuffer et le tour est joué.
Marsh Posté le 23-10-2002 à 12:02:28
BifaceMcLeOD a écrit a écrit : Harkonnen> Problème d'"Endianness"... |
Putain, Little Endian et Big Endian. Effectivement, je me ferais toujours avoir par ça...
Marsh Posté le 23-10-2002 à 12:11:20
Moi c'est les Comanches et les Apaches que je confonds.
[je suis déjà dehors]
Marsh Posté le 23-10-2002 à 12:24:29
Cherrytree a écrit a écrit : Moi c'est les Comanches et les Apaches que je confonds. [je suis déjà dehors] |
Marsh Posté le 23-10-2002 à 12:28:43
Cherrytree a écrit a écrit : Moi c'est les Comanches et les Apaches que je confonds. [je suis déjà dehors] |
Il faut t'envoyer des sioux ? Tu bosses à l'Arc ?
Marsh Posté le 23-10-2002 à 13:49:41
BifaceMcLeOD a écrit a écrit : Harkonnen> Problème d'"Endianness"... A ma connaissance, rien ne fait ça, parce que peu de gens en ont l'utilité (pour s'affranchir des '\0', l'UTF-8 marche très bien). Mais des convertisseurs int vers chaine hexa, c'est assez classique. Il suffit de prendre chaque caractère, et d'appliquer un truc du genre
. On concatène chaque chaine obtenue dans un StringBuffer et le tour est joué. |
effectivement è renvoit bien E8. J'ai un format propriétaire a la noix et le site d'unicode est down. Je ne comprends pas pq il veut que j'envoie 00E8 et pas bêtement E8.
une idée?
MERCI
Marsh Posté le 23-10-2002 à 14:14:17
utf16
Marsh Posté le 23-10-2002 à 14:16:27
--greg-- a écrit a écrit : utf16 |
bah non en fait parce que c'est du XML UTF-8
mais bon je me pose pas la question plus longtemps puisque ca fonctionne ...
Marsh Posté le 23-10-2002 à 14:22:55
DarkLord a écrit a écrit : effectivement è renvoit bien E8. J'ai un format propriétaire a la noix et le site d'unicode est down. Je ne comprends pas pq il veut que j'envoie 00E8 et pas bêtement E8. une idée? MERCI |
Ben oui, casté en int, le 'é' est plus petit que 256, donc sa valeur hexa tient sur 2 chiffres... Mais Unicode (UTF-16BE ou UTF-16LE), lui, code toujours ses caractères sur 16 bits, donc 4 chiffres hexa. Il faut donc que tu complètes à la mano ton code hexa avec le bon nombre de zéros à chaque caractère.
Marsh Posté le 23-10-2002 à 14:31:39
DarkLord a écrit a écrit : bah non en fait parce que c'est du XML UTF-8 mais bon je me pose pas la question plus longtemps puisque ca fonctionne ... |
UTF-8 est un encodage d'Unicode où chaque caractère a une longueur variable, entre 1 et 5 octets, en fonction de sa valeur. Le principal intérêt d'UTF-8 est qu'on y a la garantie qu'aucune chaîne ne contient d'octet à zéro, ce qui permet de manipuler toute chaîne UTF-8 pour un classique char* en C.
Maintenant, que ce soit largement utilisé par XML, c'est pour la même raison... même si sous nos latitudes, on utilise plutôt l'encodage ISO-Latin-1 (ou iso-8859-1, renommé win-1252 par Microsoft), qui a l'avantage d'encoder tous les caractères sur 1 octet et de contenir les 256 premiers caractères d'Unicode (d'où une conversion Unicode <--> ISO-Latin-1 très facile).
Marsh Posté le 24-10-2002 à 16:36:42
DarkLord a écrit a écrit : effectivement è renvoit bien E8. J'ai un format propriétaire a la noix et le site d'unicode est down. Je ne comprends pas pq il veut que j'envoie 00E8 et pas bêtement E8. une idée? MERCI |
En interne, Java fonctionne en Unicode (UCS-2 a priori mais je dis peut etre une betise).
Si j'ai bien compris, tu streamout ta chaine c'est ca ?
Le principe est que soit tu forces le format de ta stream au moment de l'init, soit tu la laisse telle qu'elle et elle s'adapte au codeset de la JVM (qui est en principe celui de l'OS par default, a part si tu balances un setlocale avant)
En fait y'a tellement de posts dans ce topic que je vois plus bien la question initiale
Marsh Posté le 25-10-2002 à 16:35:42
Cherrytree a écrit a écrit : Moi c'est les Comanches et les Apaches que je confonds. [je suis déjà dehors] |
Marsh Posté le 25-10-2002 à 16:45:55
Reply
Marsh Posté le 23-10-2002 à 11:31:29
Arggggg pas moyen de trouver !!!!
En fait je cherche un moyen pour transformer une bête String en sa version UNICODE (hexa).
Exemple é = 00E8
Je voudrais bien à partir de String t = "è" récupérer une autre String avec "00E8".
Si quelqu'un a déjà fait ca