Loïc Joly writes:
[ je n'ai pas de réponses à tes autres question ]
[...]
| Seconde question : J'ai fait une recherche dans les defect reports, et
| j'y ai trouvé le DR105 (émis par l'AFNOR en 98) classé comme évolution
| future. Est-ce que quelqu'un a repris le flambeau depuis ?
Je ne crois pas.
Mais je pense que tu pourrais soulever le problème en relation avec
ceci
http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2006/n1955.html
Loïc Joly <loic.actarus.joly@numericable.fr> writes:
[ je n'ai pas de réponses à tes autres question ]
[...]
| Seconde question : J'ai fait une recherche dans les defect reports, et
| j'y ai trouvé le DR105 (émis par l'AFNOR en 98) classé comme évolution
| future. Est-ce que quelqu'un a repris le flambeau depuis ?
Je ne crois pas.
Mais je pense que tu pourrais soulever le problème en relation avec
ceci
http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2006/n1955.html
Loïc Joly writes:
[ je n'ai pas de réponses à tes autres question ]
[...]
| Seconde question : J'ai fait une recherche dans les defect reports, et
| j'y ai trouvé le DR105 (émis par l'AFNOR en 98) classé comme évolution
| future. Est-ce que quelqu'un a repris le flambeau depuis ?
Je ne crois pas.
Mais je pense que tu pourrais soulever le problème en relation avec
ceci
http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2006/n1955.html
Je suis sur un OS (windows XP) dont le système de fichiers
utilise une variante d'unicode (UCS2, si j'ai bien suivi) pour
gérer les noms de fichier.
Sur cette même plateforme, les chars font 8 bits, et donc ne
peuvent coder UCS2. Or, le constructeur d'un fstream prend en
paramètre un char const*, qui ne peut donc gérer tous les noms
de fichier permis par l'OS.
Première question : Quelqu'un connait-il une astuce non
portable pour pouvoir quand même ouvrir un fichier y compris
avec des caractères étranges ? Je n'ai vraiment pas envie de
devoir passer tout mon code de lecture/écriture de fichiers
dans un format propriétaire.
Je suis sur un OS (windows XP) dont le système de fichiers
utilise une variante d'unicode (UCS2, si j'ai bien suivi) pour
gérer les noms de fichier.
Sur cette même plateforme, les chars font 8 bits, et donc ne
peuvent coder UCS2. Or, le constructeur d'un fstream prend en
paramètre un char const*, qui ne peut donc gérer tous les noms
de fichier permis par l'OS.
Première question : Quelqu'un connait-il une astuce non
portable pour pouvoir quand même ouvrir un fichier y compris
avec des caractères étranges ? Je n'ai vraiment pas envie de
devoir passer tout mon code de lecture/écriture de fichiers
dans un format propriétaire.
Je suis sur un OS (windows XP) dont le système de fichiers
utilise une variante d'unicode (UCS2, si j'ai bien suivi) pour
gérer les noms de fichier.
Sur cette même plateforme, les chars font 8 bits, et donc ne
peuvent coder UCS2. Or, le constructeur d'un fstream prend en
paramètre un char const*, qui ne peut donc gérer tous les noms
de fichier permis par l'OS.
Première question : Quelqu'un connait-il une astuce non
portable pour pouvoir quand même ouvrir un fichier y compris
avec des caractères étranges ? Je n'ai vraiment pas envie de
devoir passer tout mon code de lecture/écriture de fichiers
dans un format propriétaire.
Mais j'imagine que ton problème, c'est que tu obtiens un nom de
fichier (de l'utilisateur, par exemple) sur des wchar_t, et que
tu veux pouvoir l'utiliser, étant donné que le système aussi
accepte des noms de fichiers sur wchar_t.
Première question : Quelqu'un connait-il une astuce non
portable pour pouvoir quand même ouvrir un fichier y compris
avec des caractères étranges ? Je n'ai vraiment pas envie de
devoir passer tout mon code de lecture/écriture de fichiers
dans un format propriétaire.
La bibliothèque de VC++ les supporte directement.
Mais j'imagine que ton problème, c'est que tu obtiens un nom de
fichier (de l'utilisateur, par exemple) sur des wchar_t, et que
tu veux pouvoir l'utiliser, étant donné que le système aussi
accepte des noms de fichiers sur wchar_t.
Première question : Quelqu'un connait-il une astuce non
portable pour pouvoir quand même ouvrir un fichier y compris
avec des caractères étranges ? Je n'ai vraiment pas envie de
devoir passer tout mon code de lecture/écriture de fichiers
dans un format propriétaire.
La bibliothèque de VC++ les supporte directement.
Mais j'imagine que ton problème, c'est que tu obtiens un nom de
fichier (de l'utilisateur, par exemple) sur des wchar_t, et que
tu veux pouvoir l'utiliser, étant donné que le système aussi
accepte des noms de fichiers sur wchar_t.
Première question : Quelqu'un connait-il une astuce non
portable pour pouvoir quand même ouvrir un fichier y compris
avec des caractères étranges ? Je n'ai vraiment pas envie de
devoir passer tout mon code de lecture/écriture de fichiers
dans un format propriétaire.
La bibliothèque de VC++ les supporte directement.
kanze wrote:Mais j'imagine que ton problème, c'est que tu obtiens un nom
de fichier (de l'utilisateur, par exemple) sur des wchar_t,
et que tu veux pouvoir l'utiliser, étant donné que le
système aussi accepte des noms de fichiers sur wchar_t.
Le jeu de caractère natif de l'OS concernée est UTF16-LE, pas
wchar_t.
Et je ne vois aucune méthode portable pour passer directement
de l'un à l'autre.
Première question : Quelqu'un connait-il une astuce non
portable pour pouvoir quand même ouvrir un fichier y
compris avec des caractères étranges ? Je n'ai vraiment pas
envie de devoir passer tout mon code de lecture/écriture de
fichiers dans un format propriétaire.
La bibliothèque de VC++ les supporte directement.
Les fonctions wchar_t de VC++ ?
Effectivement, msvcrt.dll importe la fonction native de l'OS
pour ouvrir les fichiers avec des noms UTF16-LE, soit
CreateFileW dans kernel32.dll, donc a la possibilité
d'implémenter la partie "magique" nécessaire pour faire
fonctionner cela, mais ce qui n'est pas garanti avec tout
autre compilateur.
Et après vérification, VC++ propose pour l'ouverture un tout à
fait non-standard _wfopen avec argument en wchar_t.
Il y a aussi un "open(const wchar_t *_Filename ..." dans son
basic_ifstream qui me semble n'être absolument pas plus
standard.
kanze wrote:
Mais j'imagine que ton problème, c'est que tu obtiens un nom
de fichier (de l'utilisateur, par exemple) sur des wchar_t,
et que tu veux pouvoir l'utiliser, étant donné que le
système aussi accepte des noms de fichiers sur wchar_t.
Le jeu de caractère natif de l'OS concernée est UTF16-LE, pas
wchar_t.
Et je ne vois aucune méthode portable pour passer directement
de l'un à l'autre.
Première question : Quelqu'un connait-il une astuce non
portable pour pouvoir quand même ouvrir un fichier y
compris avec des caractères étranges ? Je n'ai vraiment pas
envie de devoir passer tout mon code de lecture/écriture de
fichiers dans un format propriétaire.
La bibliothèque de VC++ les supporte directement.
Les fonctions wchar_t de VC++ ?
Effectivement, msvcrt.dll importe la fonction native de l'OS
pour ouvrir les fichiers avec des noms UTF16-LE, soit
CreateFileW dans kernel32.dll, donc a la possibilité
d'implémenter la partie "magique" nécessaire pour faire
fonctionner cela, mais ce qui n'est pas garanti avec tout
autre compilateur.
Et après vérification, VC++ propose pour l'ouverture un tout à
fait non-standard _wfopen avec argument en wchar_t.
Il y a aussi un "open(const wchar_t *_Filename ..." dans son
basic_ifstream qui me semble n'être absolument pas plus
standard.
kanze wrote:Mais j'imagine que ton problème, c'est que tu obtiens un nom
de fichier (de l'utilisateur, par exemple) sur des wchar_t,
et que tu veux pouvoir l'utiliser, étant donné que le
système aussi accepte des noms de fichiers sur wchar_t.
Le jeu de caractère natif de l'OS concernée est UTF16-LE, pas
wchar_t.
Et je ne vois aucune méthode portable pour passer directement
de l'un à l'autre.
Première question : Quelqu'un connait-il une astuce non
portable pour pouvoir quand même ouvrir un fichier y
compris avec des caractères étranges ? Je n'ai vraiment pas
envie de devoir passer tout mon code de lecture/écriture de
fichiers dans un format propriétaire.
La bibliothèque de VC++ les supporte directement.
Les fonctions wchar_t de VC++ ?
Effectivement, msvcrt.dll importe la fonction native de l'OS
pour ouvrir les fichiers avec des noms UTF16-LE, soit
CreateFileW dans kernel32.dll, donc a la possibilité
d'implémenter la partie "magique" nécessaire pour faire
fonctionner cela, mais ce qui n'est pas garanti avec tout
autre compilateur.
Et après vérification, VC++ propose pour l'ouverture un tout à
fait non-standard _wfopen avec argument en wchar_t.
Il y a aussi un "open(const wchar_t *_Filename ..." dans son
basic_ifstream qui me semble n'être absolument pas plus
standard.
Loïc Joly wrote:
Bien sûr que si. L'UTF-8 existe.
Première question : Quelqu'un connait-il une astuce non
portable pour pouvoir quand même ouvrir un fichier y compris
avec des caractères étranges ? Je n'ai vraiment pas envie de
devoir passer tout mon code de lecture/écriture de fichiers
dans un format propriétaire.
La bibliothèque de VC++ les supporte directement.
Loïc Joly wrote:
Bien sûr que si. L'UTF-8 existe.
Première question : Quelqu'un connait-il une astuce non
portable pour pouvoir quand même ouvrir un fichier y compris
avec des caractères étranges ? Je n'ai vraiment pas envie de
devoir passer tout mon code de lecture/écriture de fichiers
dans un format propriétaire.
La bibliothèque de VC++ les supporte directement.
Loïc Joly wrote:
Bien sûr que si. L'UTF-8 existe.
Première question : Quelqu'un connait-il une astuce non
portable pour pouvoir quand même ouvrir un fichier y compris
avec des caractères étranges ? Je n'ai vraiment pas envie de
devoir passer tout mon code de lecture/écriture de fichiers
dans un format propriétaire.
La bibliothèque de VC++ les supporte directement.
Loïc Joly wrote:
Bien sûr que si. L'UTF-8 existe.
A ma (très faible) connaisance sur le sujet, windows n'utilise
pas l'UTF8, et n'a aucune API qui le comprenne, mais
uniquement le MBCS, encodage basé sur le même principe, mais
encodé autrement pour lequel j'ai du mal à trouver des
fonctions de conversions.
Loïc Joly wrote:
Bien sûr que si. L'UTF-8 existe.
A ma (très faible) connaisance sur le sujet, windows n'utilise
pas l'UTF8, et n'a aucune API qui le comprenne, mais
uniquement le MBCS, encodage basé sur le même principe, mais
encodé autrement pour lequel j'ai du mal à trouver des
fonctions de conversions.
Loïc Joly wrote:
Bien sûr que si. L'UTF-8 existe.
A ma (très faible) connaisance sur le sujet, windows n'utilise
pas l'UTF8, et n'a aucune API qui le comprenne, mais
uniquement le MBCS, encodage basé sur le même principe, mais
encodé autrement pour lequel j'ai du mal à trouver des
fonctions de conversions.
Bonjour à tous,
Bonjour à toi (je suis tout nouveau sur ce groupe, alors soyez
Je suis sur un OS (windows XP) dont le système de fichiers utilise une
variante d'unicode (UCS2, si j'ai bien suivi) pour gérer les noms de
fichier.
Sur cette même plateforme, les chars font 8 bits, et donc ne peuvent
coder UCS2. Or, le constructeur d'un fstream prend en paramètre un char
const*, qui ne peut donc gérer tous les noms de fichier permis par l'OS.
Première question : Quelqu'un connait-il une astuce non portable pour
pouvoir quand même ouvrir un fichier y compris avec des caractères
étranges ? Je n'ai vraiment pas envie de devoir passer tout mon code de
lecture/écriture de fichiers dans un format propriétaire.
Bonjour à tous,
Bonjour à toi (je suis tout nouveau sur ce groupe, alors soyez
Je suis sur un OS (windows XP) dont le système de fichiers utilise une
variante d'unicode (UCS2, si j'ai bien suivi) pour gérer les noms de
fichier.
Sur cette même plateforme, les chars font 8 bits, et donc ne peuvent
coder UCS2. Or, le constructeur d'un fstream prend en paramètre un char
const*, qui ne peut donc gérer tous les noms de fichier permis par l'OS.
Première question : Quelqu'un connait-il une astuce non portable pour
pouvoir quand même ouvrir un fichier y compris avec des caractères
étranges ? Je n'ai vraiment pas envie de devoir passer tout mon code de
lecture/écriture de fichiers dans un format propriétaire.
Bonjour à tous,
Bonjour à toi (je suis tout nouveau sur ce groupe, alors soyez
Je suis sur un OS (windows XP) dont le système de fichiers utilise une
variante d'unicode (UCS2, si j'ai bien suivi) pour gérer les noms de
fichier.
Sur cette même plateforme, les chars font 8 bits, et donc ne peuvent
coder UCS2. Or, le constructeur d'un fstream prend en paramètre un char
const*, qui ne peut donc gérer tous les noms de fichier permis par l'OS.
Première question : Quelqu'un connait-il une astuce non portable pour
pouvoir quand même ouvrir un fichier y compris avec des caractères
étranges ? Je n'ai vraiment pas envie de devoir passer tout mon code de
lecture/écriture de fichiers dans un format propriétaire.
Je suis sur un OS (windows XP) dont le système de fichiers
utilise une variante d'unicode (UCS2, si j'ai bien suivi)
pour gérer les noms de fichier.
Je me suis justement renseigné sur toutes ces histoires
d'encodage et comment passer de l'un à l'autre, ma réponse ne
donnera pas la solution, mais peut-être des pistes.
Le système de fichiers NTFS, tout comme le système Windows
entier, utilise l'UCS2 comme représentation interne des
caractères, et propose donc une programmation en UTF16 via son
API WIN32 (API qui permet de définir un nom de fichier, à un
bas niveau par exemple).
Je suis sur un OS (windows XP) dont le système de fichiers
utilise une variante d'unicode (UCS2, si j'ai bien suivi)
pour gérer les noms de fichier.
Je me suis justement renseigné sur toutes ces histoires
d'encodage et comment passer de l'un à l'autre, ma réponse ne
donnera pas la solution, mais peut-être des pistes.
Le système de fichiers NTFS, tout comme le système Windows
entier, utilise l'UCS2 comme représentation interne des
caractères, et propose donc une programmation en UTF16 via son
API WIN32 (API qui permet de définir un nom de fichier, à un
bas niveau par exemple).
Je suis sur un OS (windows XP) dont le système de fichiers
utilise une variante d'unicode (UCS2, si j'ai bien suivi)
pour gérer les noms de fichier.
Je me suis justement renseigné sur toutes ces histoires
d'encodage et comment passer de l'un à l'autre, ma réponse ne
donnera pas la solution, mais peut-être des pistes.
Le système de fichiers NTFS, tout comme le système Windows
entier, utilise l'UCS2 comme représentation interne des
caractères, et propose donc une programmation en UTF16 via son
API WIN32 (API qui permet de définir un nom de fichier, à un
bas niveau par exemple).
L'astuce est soit de passer ton code en Unicode (en utilisant
les variantes *w* des fonctions et classes liées aux chaînes
de caractères), soit de faire une conversion MBCS (UTF-8 en
gros), mais dans ce cas, ton programme devra être capable de
gérer les caractères mutli-octets.
Voici les références qui devraient t'aider:
http://www.cl.cam.ac.uk/~mgk25/unicode.html - très bonne FAQ
sur Unicode (orienté Unix mais très instructive, quelques
snipsets intéressants)
http://www.czyborra.com/utf - explication des UTF et quelques
pistes
L'astuce est soit de passer ton code en Unicode (en utilisant
les variantes *w* des fonctions et classes liées aux chaînes
de caractères), soit de faire une conversion MBCS (UTF-8 en
gros), mais dans ce cas, ton programme devra être capable de
gérer les caractères mutli-octets.
Voici les références qui devraient t'aider:
http://www.cl.cam.ac.uk/~mgk25/unicode.html - très bonne FAQ
sur Unicode (orienté Unix mais très instructive, quelques
snipsets intéressants)
http://www.czyborra.com/utf - explication des UTF et quelques
pistes
L'astuce est soit de passer ton code en Unicode (en utilisant
les variantes *w* des fonctions et classes liées aux chaînes
de caractères), soit de faire une conversion MBCS (UTF-8 en
gros), mais dans ce cas, ton programme devra être capable de
gérer les caractères mutli-octets.
Voici les références qui devraient t'aider:
http://www.cl.cam.ac.uk/~mgk25/unicode.html - très bonne FAQ
sur Unicode (orienté Unix mais très instructive, quelques
snipsets intéressants)
http://www.czyborra.com/utf - explication des UTF et quelques
pistes