Gestion des fichiers Unicode dans la bibliothèque standard C
La tâche d'ouverture de fichiers à l'aide de la bibliothèque standard C peut être particulièrement difficile avec les applications Windows et Unicode noms de fichiers. Unicode fait souvent référence à UTF-8 dans ce contexte.
La bibliothèque standard C ne prend pas en charge Unicode intrinsèque. char et wchar_t ne sont pas intrinsèquement des encodages Unicode. Sous Windows, wchar_t représente UTF-16, mais la bibliothèque standard ne prend pas en charge explicitement les noms de fichiers UTF-8 (le caractère n'est pas Unicode sous Windows).
Microsoft STL fournit un constructeur pour les flux de fichiers qui accepte un const wchar_t * nom de fichier, permettant la création de fichiers comme suit :
wchar_t const name[] = L"filename.txt"; std::fstream file(name);
Cependant, cette surcharge n'est pas conforme au C 11 (garantissant uniquement versions basées sur des caractères). Il est également absent dans les implémentations STL alternatives comme libstdc de GCC pour MinGW(-w64) à partir de g 4.8.x.
Notez que les différences de plate-forme affectent les interprétations de codage. char sous Windows n'est pas UTF-8 et wchar_t peut ne pas être UTF-16 sur d'autres systèmes d'exploitation. La portabilité est donc un problème. L'ouverture de flux à partir des noms de fichiers wchar_t n'est pas définie par la norme, et la spécification des noms de fichiers en char peut être problématique en raison des variations d'encodage dépendant du système d'exploitation.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!