Je n'ai absolument aucune connaissance technique sérieuse en C++ et je
ne suis pas utilisateur de C++.
D'après ce que j'ai compris sur le web, la librairie standard de C++
propose des possibilités de localisation. En particulier, il y a une
fonction qui permet de déduire le charset connaissant le langage
Quequ'un peut me donner le bout de code qui permet, connaissant le nom
du langage (selon ISO 639) de récupérer une nom de charset, selon je ne
sais quelle norme...
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
kanze
(Jérôme Laurens) wrote in message news:<1g9i5ol.1g6ax9wiua0ppN%...
Je n'ai absolument aucune connaissance technique sérieuse en C++ et je ne suis pas utilisateur de C++.
D'après ce que j'ai compris sur le web, la librairie standard de C++ propose des possibilités de localisation.
Il y a <locale>.
En particulier, il y a une fonction qui permet de déduire le charset connaissant le langage Quequ'un peut me donner le bout de code qui permet, connaissant le nom du langage (selon ISO 639) de récupérer une nom de charset,
Ça, en revanche, ne fait pas partie du langage C++. Ni d'aucun autre langage, j'imagine, étant donné que c'est mathématiquement impossible. Si je te donne un texte en anglais, par exemple, je te défie de me dire si je l'ai écrit en ASCII, ISO 8859-1, ISO 8859-15, UTF-8...
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
jlaurens@users.sourceforge.net (Jérôme Laurens) wrote in message
news:<1g9i5ol.1g6ax9wiua0ppN%jlaurens@users.sourceforge.net>...
Je n'ai absolument aucune connaissance technique sérieuse en C++ et je
ne suis pas utilisateur de C++.
D'après ce que j'ai compris sur le web, la librairie standard de C++
propose des possibilités de localisation.
Il y a <locale>.
En particulier, il y a une fonction qui permet de déduire le charset
connaissant le langage Quequ'un peut me donner le bout de code qui
permet, connaissant le nom du langage (selon ISO 639) de récupérer une
nom de charset,
Ça, en revanche, ne fait pas partie du langage C++. Ni d'aucun autre
langage, j'imagine, étant donné que c'est mathématiquement impossible.
Si je te donne un texte en anglais, par exemple, je te défie de me dire
si je l'ai écrit en ASCII, ISO 8859-1, ISO 8859-15, UTF-8...
--
James Kanze GABI Software mailto:kanze@gabi-soft.fr
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
(Jérôme Laurens) wrote in message news:<1g9i5ol.1g6ax9wiua0ppN%...
Je n'ai absolument aucune connaissance technique sérieuse en C++ et je ne suis pas utilisateur de C++.
D'après ce que j'ai compris sur le web, la librairie standard de C++ propose des possibilités de localisation.
Il y a <locale>.
En particulier, il y a une fonction qui permet de déduire le charset connaissant le langage Quequ'un peut me donner le bout de code qui permet, connaissant le nom du langage (selon ISO 639) de récupérer une nom de charset,
Ça, en revanche, ne fait pas partie du langage C++. Ni d'aucun autre langage, j'imagine, étant donné que c'est mathématiquement impossible. Si je te donne un texte en anglais, par exemple, je te défie de me dire si je l'ai écrit en ASCII, ISO 8859-1, ISO 8859-15, UTF-8...
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
Samuel Krempp
le Thursday 26 February 2004 15:01, écrivit :
Ça, en revanche, ne fait pas partie du langage C++. Ni d'aucun autre langage, j'imagine, étant donné que c'est mathématiquement impossible. Si je te donne un texte en anglais, par exemple, je te défie de me dire si je l'ai écrit en ASCII, ISO 8859-1, ISO 8859-15, UTF-8...
enfin on peut imaginer des algos pour deviner avec un risque assez faible d'erreur les charset possibles.
Mais je suis pas sûr que c'est ce que voulait Jérôme. à partir de "fr", il voudrait obtenir un charset valable pour le texte dans ce langage.
c'est pas tout à fait comme ça qu'il faut envisager les choses, c'est en fait le système qui se charge de ça (pour la bonne raison que le charset voulu pour une langue donnée n'est pas tjrs le même).
ce qui est dispo en C++, par exple, c'est explicit locale(const char* std_name);
qui construit un objet locale à partir d'un nom standard de locale ("POSIX", et diverses autres possibles selon le systèmes, genre "fr_FR")
tu peux regarder des explications et exemples en parcourant http://www.research.att.com/~bs/3rd_loc.pdf
(pas la peine de tout comprendre pour avoir un aperçu de comment ça s'utilise) -- Sam
le Thursday 26 February 2004 15:01, kanze@gabi-soft.fr écrivit :
Ça, en revanche, ne fait pas partie du langage C++. Ni d'aucun autre
langage, j'imagine, étant donné que c'est mathématiquement impossible.
Si je te donne un texte en anglais, par exemple, je te défie de me dire
si je l'ai écrit en ASCII, ISO 8859-1, ISO 8859-15, UTF-8...
enfin on peut imaginer des algos pour deviner avec un risque assez faible
d'erreur les charset possibles.
Mais je suis pas sûr que c'est ce que voulait Jérôme.
à partir de "fr", il voudrait obtenir un charset valable pour le texte dans
ce langage.
c'est pas tout à fait comme ça qu'il faut envisager les choses, c'est en
fait le système qui se charge de ça (pour la bonne raison que le charset
voulu pour une langue donnée n'est pas tjrs le même).
ce qui est dispo en C++, par exple, c'est
explicit locale(const char* std_name);
qui construit un objet locale à partir d'un nom standard de locale ("POSIX",
et diverses autres possibles selon le systèmes, genre "fr_FR")
tu peux regarder des explications et exemples en parcourant
http://www.research.att.com/~bs/3rd_loc.pdf
(pas la peine de tout comprendre pour avoir un aperçu de comment ça
s'utilise)
--
Sam
Ça, en revanche, ne fait pas partie du langage C++. Ni d'aucun autre langage, j'imagine, étant donné que c'est mathématiquement impossible. Si je te donne un texte en anglais, par exemple, je te défie de me dire si je l'ai écrit en ASCII, ISO 8859-1, ISO 8859-15, UTF-8...
enfin on peut imaginer des algos pour deviner avec un risque assez faible d'erreur les charset possibles.
Mais je suis pas sûr que c'est ce que voulait Jérôme. à partir de "fr", il voudrait obtenir un charset valable pour le texte dans ce langage.
c'est pas tout à fait comme ça qu'il faut envisager les choses, c'est en fait le système qui se charge de ça (pour la bonne raison que le charset voulu pour une langue donnée n'est pas tjrs le même).
ce qui est dispo en C++, par exple, c'est explicit locale(const char* std_name);
qui construit un objet locale à partir d'un nom standard de locale ("POSIX", et diverses autres possibles selon le systèmes, genre "fr_FR")
tu peux regarder des explications et exemples en parcourant http://www.research.att.com/~bs/3rd_loc.pdf
(pas la peine de tout comprendre pour avoir un aperçu de comment ça s'utilise) -- Sam
James Kanze
Samuel Krempp writes:
|> le Thursday 26 February 2004 15:01, écrivit : |> > Ça, en revanche, ne fait pas partie du langage C++. Ni d'aucun |> > autre langage, j'imagine, étant donné que c'est |> > mathématiquement impossible. Si je te donne un texte en |> > anglais, par exemple, je te défie de me dire si je l'ai |> > écrit en ASCII, ISO 8859-1, ISO 8859-15, UTF-8...
|> enfin on peut imaginer des algos pour deviner avec un risque assez |> faible d'erreur les charset possibles.
Pour un nombre de codes limités, et avec une quantité d'entrées suffisamment grandes. Mais en prenant les 512 premiers caractères, avec un texte en anglais, distinguer entre les quatres que j'ai cité me semble assez problèmatique. Avec un texte en français ou en allemand, tu pourrais déjà écarter l'ASCII, et tu pourrais probablement distinguer entre 8859 et UTF-8. Entre 8859-1 et 8859-15 me semble encore problèmatique, en revanche. Et si tu ne sais pas si le texte est en français ou en tchéque, comment faire pour savoir si le code st 8859-1 ou 8859-2 ?
|> Mais je suis pas sûr que c'est ce que voulait Jérôme. à |> partir de "fr", il voudrait obtenir un charset valable pour le texte |> dans ce langage.
Il y en a plusieurs. Je dirais que s'il a un choix, Unicode me semble tout à fait indiquer. Et dans cas-là, évidemment, il n'y a plus besoin de savoir si c'est du français ou du chinois.
|> c'est pas tout à fait comme ça qu'il faut envisager les |> choses, c'est en fait le système qui se charge de ça (pour la |> bonne raison que le charset voulu pour une langue donnée n'est |> pas tjrs le même).
|> ce qui est dispo en C++, par exple, c'est explicit locale(const |> char* std_name);
|> qui construit un objet locale à partir d'un nom standard de |> locale ("POSIX", et diverses autres possibles selon le systèmes, |> genre "fr_FR")
C'est ce qui est prévu. Seulement, les noms des locales ne sont pas normalisés : les systèmes Unix ont la tendance à utiliser le format <langue>_<pays>.<code>, où <langue> et <pays> correspondent au codes à deux caractères ISO pour les langues et les pays (avec la langue en minuscules, et le pays en majuscules, aller savoir pourquoi). Sauf que typiquement, le système accepte aussi les racourcis : "fr" pourrait être un synonyme pour "fr_FR.ISO-8859-15", par exemple, mais je pourrais aussi avoir à lire des fichiers en "fr_FR.ISO-8859-1", "fr_FR.UTF-8", voire "fr_FR.ISO-646-fr". (Seulement que ce dernier n'est pas un locale supporté sur mon système.)
Le problème, c'est que d'une part, le nommage des locales n'est pas standardisé ; je ne crois pas qu'on trouve ce format sous Windows, par exemple. Et de l'autre, ce n'est même pas garantie que le locale dont on a besoin soit présent, et qu'il n'y a aucun moyen portable pour déterminer lesquels y sont.
|> tu peux regarder des explications et exemples en parcourant |> http://www.research.att.com/~bs/3rd_loc.pdf
|> (pas la peine de tout comprendre pour avoir un aperçu de comment |> ça s'utilise)
Comment ça doit s'utiliser en théorie. Dans la pratique, le support en est assez variable.
-- James Kanze mailto: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France +33 1 41 89 80 93
Samuel Krempp <krempp@crans.truc.en.trop.ens-cachan.fr> writes:
|> le Thursday 26 February 2004 15:01, kanze@gabi-soft.fr écrivit :
|> > Ça, en revanche, ne fait pas partie du langage C++. Ni d'aucun
|> > autre langage, j'imagine, étant donné que c'est
|> > mathématiquement impossible. Si je te donne un texte en
|> > anglais, par exemple, je te défie de me dire si je l'ai
|> > écrit en ASCII, ISO 8859-1, ISO 8859-15, UTF-8...
|> enfin on peut imaginer des algos pour deviner avec un risque assez
|> faible d'erreur les charset possibles.
Pour un nombre de codes limités, et avec une quantité d'entrées
suffisamment grandes. Mais en prenant les 512 premiers caractères,
avec un texte en anglais, distinguer entre les quatres que j'ai cité
me semble assez problèmatique. Avec un texte en français ou en
allemand, tu pourrais déjà écarter l'ASCII, et tu pourrais
probablement distinguer entre 8859 et UTF-8. Entre 8859-1 et 8859-15 me
semble encore problèmatique, en revanche. Et si tu ne sais pas si le
texte est en français ou en tchéque, comment faire pour savoir si
le code st 8859-1 ou 8859-2 ?
|> Mais je suis pas sûr que c'est ce que voulait Jérôme. à
|> partir de "fr", il voudrait obtenir un charset valable pour le texte
|> dans ce langage.
Il y en a plusieurs. Je dirais que s'il a un choix, Unicode me semble
tout à fait indiquer. Et dans cas-là, évidemment, il n'y a plus
besoin de savoir si c'est du français ou du chinois.
|> c'est pas tout à fait comme ça qu'il faut envisager les
|> choses, c'est en fait le système qui se charge de ça (pour la
|> bonne raison que le charset voulu pour une langue donnée n'est
|> pas tjrs le même).
|> ce qui est dispo en C++, par exple, c'est explicit locale(const
|> char* std_name);
|> qui construit un objet locale à partir d'un nom standard de
|> locale ("POSIX", et diverses autres possibles selon le systèmes,
|> genre "fr_FR")
C'est ce qui est prévu. Seulement, les noms des locales ne sont pas
normalisés : les systèmes Unix ont la tendance à utiliser le
format <langue>_<pays>.<code>, où <langue> et <pays> correspondent au
codes à deux caractères ISO pour les langues et les pays (avec la
langue en minuscules, et le pays en majuscules, aller savoir pourquoi).
Sauf que typiquement, le système accepte aussi les racourcis : "fr"
pourrait être un synonyme pour "fr_FR.ISO-8859-15", par exemple, mais
je pourrais aussi avoir à lire des fichiers en "fr_FR.ISO-8859-1",
"fr_FR.UTF-8", voire "fr_FR.ISO-646-fr". (Seulement que ce dernier n'est
pas un locale supporté sur mon système.)
Le problème, c'est que d'une part, le nommage des locales n'est pas
standardisé ; je ne crois pas qu'on trouve ce format sous Windows,
par exemple. Et de l'autre, ce n'est même pas garantie que le locale
dont on a besoin soit présent, et qu'il n'y a aucun moyen portable
pour déterminer lesquels y sont.
|> tu peux regarder des explications et exemples en parcourant
|> http://www.research.att.com/~bs/3rd_loc.pdf
|> (pas la peine de tout comprendre pour avoir un aperçu de comment
|> ça s'utilise)
Comment ça doit s'utiliser en théorie. Dans la pratique, le
support en est assez variable.
--
James Kanze mailto:kanze@gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France +33 1 41 89 80 93
|> le Thursday 26 February 2004 15:01, écrivit : |> > Ça, en revanche, ne fait pas partie du langage C++. Ni d'aucun |> > autre langage, j'imagine, étant donné que c'est |> > mathématiquement impossible. Si je te donne un texte en |> > anglais, par exemple, je te défie de me dire si je l'ai |> > écrit en ASCII, ISO 8859-1, ISO 8859-15, UTF-8...
|> enfin on peut imaginer des algos pour deviner avec un risque assez |> faible d'erreur les charset possibles.
Pour un nombre de codes limités, et avec une quantité d'entrées suffisamment grandes. Mais en prenant les 512 premiers caractères, avec un texte en anglais, distinguer entre les quatres que j'ai cité me semble assez problèmatique. Avec un texte en français ou en allemand, tu pourrais déjà écarter l'ASCII, et tu pourrais probablement distinguer entre 8859 et UTF-8. Entre 8859-1 et 8859-15 me semble encore problèmatique, en revanche. Et si tu ne sais pas si le texte est en français ou en tchéque, comment faire pour savoir si le code st 8859-1 ou 8859-2 ?
|> Mais je suis pas sûr que c'est ce que voulait Jérôme. à |> partir de "fr", il voudrait obtenir un charset valable pour le texte |> dans ce langage.
Il y en a plusieurs. Je dirais que s'il a un choix, Unicode me semble tout à fait indiquer. Et dans cas-là, évidemment, il n'y a plus besoin de savoir si c'est du français ou du chinois.
|> c'est pas tout à fait comme ça qu'il faut envisager les |> choses, c'est en fait le système qui se charge de ça (pour la |> bonne raison que le charset voulu pour une langue donnée n'est |> pas tjrs le même).
|> ce qui est dispo en C++, par exple, c'est explicit locale(const |> char* std_name);
|> qui construit un objet locale à partir d'un nom standard de |> locale ("POSIX", et diverses autres possibles selon le systèmes, |> genre "fr_FR")
C'est ce qui est prévu. Seulement, les noms des locales ne sont pas normalisés : les systèmes Unix ont la tendance à utiliser le format <langue>_<pays>.<code>, où <langue> et <pays> correspondent au codes à deux caractères ISO pour les langues et les pays (avec la langue en minuscules, et le pays en majuscules, aller savoir pourquoi). Sauf que typiquement, le système accepte aussi les racourcis : "fr" pourrait être un synonyme pour "fr_FR.ISO-8859-15", par exemple, mais je pourrais aussi avoir à lire des fichiers en "fr_FR.ISO-8859-1", "fr_FR.UTF-8", voire "fr_FR.ISO-646-fr". (Seulement que ce dernier n'est pas un locale supporté sur mon système.)
Le problème, c'est que d'une part, le nommage des locales n'est pas standardisé ; je ne crois pas qu'on trouve ce format sous Windows, par exemple. Et de l'autre, ce n'est même pas garantie que le locale dont on a besoin soit présent, et qu'il n'y a aucun moyen portable pour déterminer lesquels y sont.
|> tu peux regarder des explications et exemples en parcourant |> http://www.research.att.com/~bs/3rd_loc.pdf
|> (pas la peine de tout comprendre pour avoir un aperçu de comment |> ça s'utilise)
Comment ça doit s'utiliser en théorie. Dans la pratique, le support en est assez variable.
-- James Kanze mailto: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France +33 1 41 89 80 93