Windows 上の C での UTF-8 文字列の処理
文字列を UTF-8 でエンコードすることは、クロスプラットフォーム アプリケーションで広く使用されています。ただし、Windows で UTF-8 文字列を std::cout に出力すると、特有の課題が生じます。
Windows のデフォルトの動作では、std::cout は非 Unicode 形式の文字列を期待します。 UTF-8 文字列が表示されると、破損した文字が表示されます。
この問題に対処するには、主に 2 つの手順があります:
これらの解決策を組み込んだ改訂されたコード スニペットを次に示します:
#include
#include
#include
#include
int main() {
// Set console code page to UTF-8
SetConsoleOutputCP(CP_UTF8);
// Enable buffering to prevent byte-by-byte transmission
setvbuf(stdout, nullptr, _IOFBF, 1000);
// Output UTF-8 string
std::string test = u8"Greek: αβγδ; German: Übergrößenträger";
std::cout これらの手順に加えて、Windows コンソールのラスター フォントでは非 ASCII Unicode 文字が正しく表示されない場合があることに注意してください。適切なレンダリングを有効にするには、TrueType フォントに切り替えることをお勧めします。これは Windows 10 以降のバージョンのデフォルトです。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3