Windows コンソールでの適切な UTF-8 文字印刷
この記事は、Windows コンソールで UTF-8 文字を印刷しようとするときに直面する課題に対処することを目的としています。 Windows コンソール。
問題の説明
ユーザーは、特定のコード スニペットを使用してドイツ語の文字を表示する際に問題が発生しました:
<code class="c++">#include <stdio.h> #include <windows.h> int main() { SetConsoleOutputCP(CP_UTF8); // German characters not appearing char const* text = "aäbcdefghijklmnoöpqrsßtuüvwxyz"; int len = MultiByteToWideChar(CP_UTF8, 0, text, -1, 0, 0); wchar_t *unicode_text = new wchar_t[len]; MultiByteToWideChar(CP_UTF8, 0, text, -1, unicode_text, len); wprintf(L"%s", unicode_text); }</code>
コードページを UTF-8 に出力すると、ドイツ語の文字が正しく印刷されません。
解決策
Windows コンソールで Unicode データを正しく印刷するには、いくつかの方法があります。
トラブルシューティング
3 番目の方法で出力が正しくない場合:
<code class="c++">putc('2'); putc('0'); // doesn't work with CP_UTF8 puts("20"); // correctly writes UTF-8 data to Windows console with CP_UTF8 </code>
これは、CP_UTF8 を使用する場合、コンソール API が個別の呼び出しで渡されたデータを不正なエンコーディングとして解釈するためです。
これを解決するには、マルチバイト文字変換を正確に処理し、書き込み間の変換状態を維持する streambuf サブクラスを作成することを検討してください。
以上がWindows コンソールでドイツ語の文字を含む UTF-8 文字を正しく印刷するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。