2008-09-28 9 views
4

Y at-il une version wchar_t de exec[lv][pe] (à savoir un exec qui utilise wchar_t comme chemin et wchar_t comme arguments)? En Windows, je peux simplement faire CreateProcessW(process, cmdline), mais en *nix, je suis bloqué (c'est-à-dire pas d'équivalent POSIX pur). J'essaie d'ajouter le support UTF-16 à mon programme (un autorun).large exec pour C/C++

Répondre

4

Il n'y en a pas. Sous UNIX, il est habituel d'utiliser UTF-8 lors de l'interaction avec l'environnement.

+0

Est-ce que exec [lv] [pe] * UTF-8-aware? –

+0

C'est la beauté de l'UTF-8 - - Les fonctions qui fonctionnent sur des octets terminés par NULL (AKA presque tous) fonctionneront avec UTF-8: –

+1

sous Unix, il est habituel d'utiliser ASCII lors de l'interaction avec l'environnement. – hillu

2

Il y a cependant un problème: le système de fichiers sous UNIX/Linux est indépendant du codage. Donc, si je fais un LANG = ja_JAP.EUC_JP, créez un fichier avec le nom japonais, puis je fais un LANG = ja_JP.UTF8, quand je regarde mon nom de fichier ressemblera à du courrier indésirable, et ce sera une chaîne UTF-8 invalide.

Vous pourriez dire: pourquoi faire ça? Mais imaginez que vous avez un système utilisé par des centaines d'utilisateurs internationaux, chacun utilisant des fichiers russes/chinois/coréens/arabes, et vous devez écrire une application de sauvegarde :-(

La "solution" est de demander à tout le monde de définir les paramètres régionaux à quelque chose.UTF8, mais c'est juste une convention, le système lui-même n'applique rien