Maison  >  Article  >  développement back-end  >  Comment charger du contenu UTF-8 dans Wstrings sous Windows ?

Comment charger du contenu UTF-8 dans Wstrings sous Windows ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-06 21:35:03737parcourir

How to Load UTF-8 Content into Wstrings on Windows?

Chargement de contenu UTF-8 dans Wstrings sous Windows

La lecture de fichiers Unicode (UTF-8) dans wstrings sur les plates-formes Windows nécessite une manipulation minutieuse de codage de caractères pour garantir une interprétation correcte des données texte.

Avec l'avènement de C 11, la facette std::codecvt_utf8 fournit une solution robuste pour convertir les chaînes d'octets codées en UTF-8 en chaînes de caractères UCS2 ou UCS4. Cette facette peut faciliter à la fois la lecture et l'écriture de fichiers UTF-8.

Utilisation de la facette std::codecvt_utf8

Pour utiliser efficacement la facette std::codecvt_utf8, la les étapes suivantes sont impliquées :

  1. Créez un objet de paramètres régionaux qui encapsule les informations spécifiques à la culture et inclut la facette de conversion UTF-8.
  2. Imprégnez le tampon de flux d'un ifstream avec les informations localisées .
  3. Utilisez le tampon de flux imprégné pour lire le fichier UTF-8.

Un exemple d'implémentation de cette approche est décrit ci-dessous :

#include <sstream>
#include <fstream>
#include <codecvt>

std::wstring readFile(const char* filename) {
  std::wifstream wif(filename);
  wif.imbue(std::locale(std::locale::empty(), new std::codecvt_utf8<wchar_t>));
  std::wstringstream wss;
  wss << wif.rdbuf();
  return wss.str();
}

Cette fonction peut être utilisé pour charger facilement du contenu UTF-8 dans une variable wstring.

Alternative : définir la langue C globale

Alternativement, il est possible de définir la langue C globale paramètres régionaux en UTF-8 avant de travailler avec des flux de chaînes. Cela élimine le besoin d'imprégner manuellement les tampons de flux :

std::locale::global(std::locale(std::locale::empty(), new std::codecvt_utf8<wchar_t>));

Avec cette approche, tous les constructeurs de paramètres régionaux standard suivants renverront une copie des paramètres régionaux C globaux modifiés, permettant une gestion automatique de l'encodage UTF-8.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn