Conversion multiplateforme entre UTF8 et caractères larges en STL
Lorsque vous travaillez avec différents systèmes d'exploitation, la gestion des données textuelles peut présenter des défis en raison de représentations variées des personnages. Par exemple, la conversion d'une chaîne codée en UTF8 dans un objet chaîne standard en son homologue de caractères larges dans un objet chaîne large peut varier selon les plates-formes.
Dans le passé, les développeurs devaient s'appuyer sur des fonctions spécifiques à la plate-forme telles que MultiByteToWideChar. et WideCharToMultiByte sous Windows, limitant la compatibilité multiplateforme. Heureusement, l'avènement de la bibliothèque standard C (STL) offre des solutions plus polyvalentes.
Une approche utilise la bibliothèque boost::locale, comme suggéré dans un fil de discussion précédent, mais depuis son incorporation dans la norme en tant que C 11 , une option plus moderne et plus facilement accessible existe :
Conversion basée sur STL
Le code suivant illustre le processus de conversion :
UTF-8 vers UTF-16
std::string source; ... std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> convert; std::u16string dest = convert.from_bytes(source);
UTF-16 vers UTF-8
std::u16string source; ... std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> convert; std::string dest = convert.to_bytes(source);
Cette approche offre une indépendance de plate-forme et une facilité d'utilisation, ce qui en fait une solution efficace pour la conversion multiplateforme entre UTF8 et Wide. personnages.
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!