quelqu'un saurait-il comment on peut, =E0 partir d'une chaine (par
exemple un char*), r=E9cup=E9rer les codes unicode des caract=E8res (i.e.
=E9=3D233, A=3D65, etc...), afin d'=E9crire les caracteres sous la forme
&#???;
J'ai recherch=E9 du cot=E9 des locales, mais j'ai pas trouv=E9 (j'ai
cherch=E9 longtemps pourtant !!!)
ps : pour les carat=E8res ascii c'est simple, c'est le meme code... mais
pour les autres....
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
James Kanze
quelqu'un saurait-il comment on peut, à partir d'une chaine (par exemple un char*), récupérer les codes unicode des caractères (i.e. é#3, Ae, etc...), afin d'écrire les caracteres sous la forme &#???;
J'ai recherché du coté des locales, mais j'ai pas trouvé (j'ai cherché longtemps pourtant !!!)
ps : pour les caratères ascii c'est simple, c'est le meme code... mais pour les autres....
Pour tous les caractères, il dépend de l'encodage -- il existe (ou a existé, au moins) des implémentations EBCDIC.
La solution générale est assez simple : tu utilises une table de transcodage, c-à-d un tableau qui est indexé par ton char (probablement converti en unsigned char). Donc, si dans ton encodage, 0xA3 est 'é', à l'indice 0xA3 du tableau, tu mets 0x00E9. Évidemment, il faut savoir l'encodage du départ.
Il y a un cas particulier : ISO 8859-1. Ce qui est un encodage assez courant en France (bien qu'on lui préfère 8859-15 aujourd'hui, à cause de l'Euro). Dans ce cas, et dans ce cas seulement, il suffit de convertir le char en unsigned char (en ensuite en int32_t ou uint32_t) pour avoir le caractère Unicode.
On trouvera des tables de conversion pour beaucoup d'encodages, ainsi que beaucoup d'autre information, au site Unicode : http://www.unicode.org. (http://www.unicode.or/Public/MAPPINGS pour les tables de transcodage.) Le format de ces tables a été conçu exprès pour faciliter leur utilisation par un programme -- pour générer la partie données de ton tableau, par exemple, quelque chose du genre :
suffira. (Mais on pourrait préférer quelque chose un peu plus complex, avec vérification d'erreur, etc. Dans mon cas, la forme d'Unicode qui m'intéresse est UTF-8, le tableau est donc un peu plus compliqué, et j'ai écrit un petit programme en C++ pour le générer -- les valeurs hex ne sont pas le point fort d'AWK.)
-- James Kanze Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
quelqu'un saurait-il comment on peut, à partir d'une chaine (par
exemple un char*), récupérer les codes unicode des caractères (i.e.
é#3, Ae, etc...), afin d'écrire les caracteres sous la forme
&#???;
J'ai recherché du coté des locales, mais j'ai pas trouvé (j'ai cherché
longtemps pourtant !!!)
ps : pour les caratères ascii c'est simple, c'est le meme code... mais
pour les autres....
Pour tous les caractères, il dépend de l'encodage -- il existe (ou a
existé, au moins) des implémentations EBCDIC.
La solution générale est assez simple : tu utilises une table de
transcodage, c-à-d un tableau qui est indexé par ton char (probablement
converti en unsigned char). Donc, si dans ton encodage, 0xA3 est 'é', à
l'indice 0xA3 du tableau, tu mets 0x00E9. Évidemment, il faut savoir
l'encodage du départ.
Il y a un cas particulier : ISO 8859-1. Ce qui est un encodage assez
courant en France (bien qu'on lui préfère 8859-15 aujourd'hui, à cause
de l'Euro). Dans ce cas, et dans ce cas seulement, il suffit de
convertir le char en unsigned char (en ensuite en int32_t ou uint32_t)
pour avoir le caractère Unicode.
On trouvera des tables de conversion pour beaucoup d'encodages, ainsi
que beaucoup d'autre information, au site Unicode :
http://www.unicode.org. (http://www.unicode.or/Public/MAPPINGS pour les
tables de transcodage.) Le format de ces tables a été conçu exprès pour
faciliter leur utilisation par un programme -- pour générer la partie
données de ton tableau, par exemple, quelque chose du genre :
suffira. (Mais on pourrait préférer quelque chose un peu plus complex,
avec vérification d'erreur, etc. Dans mon cas, la forme d'Unicode qui
m'intéresse est UTF-8, le tableau est donc un peu plus compliqué, et
j'ai écrit un petit programme en C++ pour le générer -- les valeurs hex
ne sont pas le point fort d'AWK.)
--
James Kanze kanze.james@neuf.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
quelqu'un saurait-il comment on peut, à partir d'une chaine (par exemple un char*), récupérer les codes unicode des caractères (i.e. é#3, Ae, etc...), afin d'écrire les caracteres sous la forme &#???;
J'ai recherché du coté des locales, mais j'ai pas trouvé (j'ai cherché longtemps pourtant !!!)
ps : pour les caratères ascii c'est simple, c'est le meme code... mais pour les autres....
Pour tous les caractères, il dépend de l'encodage -- il existe (ou a existé, au moins) des implémentations EBCDIC.
La solution générale est assez simple : tu utilises une table de transcodage, c-à-d un tableau qui est indexé par ton char (probablement converti en unsigned char). Donc, si dans ton encodage, 0xA3 est 'é', à l'indice 0xA3 du tableau, tu mets 0x00E9. Évidemment, il faut savoir l'encodage du départ.
Il y a un cas particulier : ISO 8859-1. Ce qui est un encodage assez courant en France (bien qu'on lui préfère 8859-15 aujourd'hui, à cause de l'Euro). Dans ce cas, et dans ce cas seulement, il suffit de convertir le char en unsigned char (en ensuite en int32_t ou uint32_t) pour avoir le caractère Unicode.
On trouvera des tables de conversion pour beaucoup d'encodages, ainsi que beaucoup d'autre information, au site Unicode : http://www.unicode.org. (http://www.unicode.or/Public/MAPPINGS pour les tables de transcodage.) Le format de ces tables a été conçu exprès pour faciliter leur utilisation par un programme -- pour générer la partie données de ton tableau, par exemple, quelque chose du genre :
suffira. (Mais on pourrait préférer quelque chose un peu plus complex, avec vérification d'erreur, etc. Dans mon cas, la forme d'Unicode qui m'intéresse est UTF-8, le tableau est donc un peu plus compliqué, et j'ai écrit un petit programme en C++ pour le générer -- les valeurs hex ne sont pas le point fort d'AWK.)
-- James Kanze Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34