Memuatkan Kandungan UTF-8 ke dalam Wstrings pada Windows
Membaca fail Unicode (UTF-8) ke dalam wstrings pada platform Windows memerlukan pengendalian yang teliti pengekodan aksara untuk memastikan tafsiran yang betul bagi data teks.
Dengan kemunculan C 11, faset std::codecvt_utf8 menyediakan penyelesaian yang mantap untuk menukar rentetan bait berkod UTF-8 kepada rentetan aksara UCS2 atau UCS4. Aspek ini boleh memudahkan pembacaan dan penulisan fail UTF-8.
Menggunakan std::codecvt_utf8 Facet
Untuk menggunakan facet std::codecvt_utf8 dengan berkesan, langkah berikut terlibat:
Contoh pelaksanaan pendekatan ini digariskan di bawah:
#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(); }
Fungsi ini boleh digunakan untuk memuatkan kandungan UTF-8 dengan mudah ke dalam pembolehubah wstring.
Alternatif: Menetapkan Tempatan C Global
Sebagai alternatif, adalah mungkin untuk menetapkan C global lokalkan ke UTF-8 sebelum bekerja dengan aliran rentetan. Ini menghapuskan keperluan untuk menyerap penimbal strim secara manual:
std::locale::global(std::locale(std::locale::empty(), new std::codecvt_utf8<wchar_t>));
Dengan pendekatan ini, semua pembina setempat standard berikutnya akan memulangkan salinan lokal C global yang diubah suai, membenarkan pengendalian automatik pengekodan UTF-8.
Atas ialah kandungan terperinci Bagaimana untuk Memuatkan Kandungan UTF-8 ke dalam Wstrings pada Windows?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!