c++ comment écrire/lire ofstream en unicode / utf8
J'ai ut8 fichier texte , que la messagerie instantanée de la lecture à l'aide de simple :
ifstream in("test.txt");
maintenant, j'aime créer un nouveau fichier wll ut8 encodage Unicode ou
comment puis-je faire cela avec ofstream ou autres ?
cela crée moi l'Encodage ansi.
ofstream out(fileName.c_str(), ios::out | ios::app | ios::binary);
Cet article peut vous aider: UTF-8 Avec C++ de Façon Portable
Que voulez-vous dire utf8 n'est pas l'Unicode?
Veuillez inclure un minimum mais l'exemple de code complet présentant le comportement que vous decribe.
Unicode peuvent être encodés en plusieurs formats, dont le format UTF-8 est un seul. Codé en UTF-16 Unicode est tout autant Unicode comme c'est codé en UTF-8 Unicode, par exemple, mais en essayant de l'analyser en tant que UTF-8 est le plus susceptible de faire de votre décodeur crash and burn. Donc, mieux vaut être clair sur lequel l'encodage des caractères Unicode table on parle.
Utf8 est autant Unicode comme utf16 et utf32. Il n'y a pas de tables de caractères. Unicode est une cartographie des codes de caractères. UtfX sont des façons de représenter les codes de façon portable.
Que voulez-vous dire utf8 n'est pas l'Unicode?
Veuillez inclure un minimum mais l'exemple de code complet présentant le comportement que vous decribe.
Unicode peuvent être encodés en plusieurs formats, dont le format UTF-8 est un seul. Codé en UTF-16 Unicode est tout autant Unicode comme c'est codé en UTF-8 Unicode, par exemple, mais en essayant de l'analyser en tant que UTF-8 est le plus susceptible de faire de votre décodeur crash and burn. Donc, mieux vaut être clair sur lequel l'encodage des caractères Unicode table on parle.
Utf8 est autant Unicode comme utf16 et utf32. Il n'y a pas de tables de caractères. Unicode est une cartographie des codes de caractères. UtfX sont des façons de représenter les codes de façon portable.
OriginalL'auteur user63898 | 2011-02-17
Vous devez vous connecter pour publier un commentaire.
Ok, sur le portable de la variante. Il est facile, si vous utilisez le
C++11
standard (parce qu'il y a beaucoup de supplémentaire comprend comme"utf8"
, ce qui résout ce problème pour toujours).Mais si vous voulez utiliser le multi-plate-forme de code avec les normes les plus anciennes, vous pouvez utiliser cette méthode pour écrire avec des cours d'eau:
stxutif.h
à votre projet à partir de sources ci-dessusOuvrir le fichier en mode ANSI et d'ajouter de la NOMENCLATURE pour le début d'un fichier, comme ceci:
Puis ouvrez le fichier en tant que
UTF
et d'écrire votre contenu:Fichier de sauvegarde dans le format correct.
"L'UCS-2 et UTF-16 codages de spécifier le format Unicode Marque d'Ordre des Octets (BOM) pour une utilisation dans les débuts de fichiers de texte, qui peut être utilisé pour l'octet de commande de détection (ou octet boutisme de détection). "- en.wikipedia.org/wiki/Byte_order_mark
Ne pas écrire de BOM UTF-8! "Le Standard Unicode ne nécessite ni ne recommande l'utilisation de la NOMENCLATURE d'UTF-8" en.wikipedia.org/wiki/Byte_order_mark
Bon article pour mettre à jour ce thème "de Nouvelles Options pour la Gestion des Jeux de Caractères dans le Microsoft C/C++ Compilateur' blogs.msdn.microsoft.com/vcblog/2016/02/22/...
OriginalL'auteur