私はまだC++を学んでいるので、私と私のずさんなコードには我慢してください。私が使用しているコンパイラはDev C++です。 coutを使用してコンソールにUnicode文字を出力できるようにしたい。私がするようなことをするときはいつでも:
#include <iostream>
int main()
{
std::cout << "Hello World!\n";
std::cout << "Blah blah blah some gibberish unicode: ĐĄßĞĝ\n";
system("PAUSE");
return 0;
}
ΜA■Ggのような奇妙な文字をコンソールに出力します。なぜそれが行われるのですか?ĐĄßĞĝを表示するにはどうすればよいですか?またはこれはWindowsでは不可能ですか?
_std::wcout
_はどうですか?
_#include <iostream>
int main() {
std::wcout << L"Hello World!" << std::endl;
return 0;
}
_
これは標準のワイド文字出力ストリームです。
それでも、エイドリアンが指摘したように、これはcmd
がデフォルトでUnicode出力を処理しないという事実に対処していません。これは、Adrianの回答で説明されているように、コンソールを手動で設定することで対処できます。
/u
_引数を使用してcmd
を開始します。chcp 65001
_を呼び出して出力形式を変更します。_fcntl.h
_および_io.h
_を必要とする_setmode(_fileno(stdout), _O_U16TEXT);
を使用することもできます( this answer で説明されており、- this blogで説明されています)投稿 )。
Windows XPが必要なものを完全にサポートするかどうかはわかりません。コマンドコンソールでUnicodeを有効にするには、次の3つのことを行う必要があります。
cmd /u
で開始します。 /u
は、プログラムがUnicodeを出力することを示しています。chcp 65001
を使用して、コードページの1つではなくUTF-8を使用することを示します。Lucida Console Unicode
を提供します。私のXPボックスにはLucida Console
と呼ばれるもののサブセットがあります。非常に広範なレパートリーはありませんが、アクセント付き文字を表示するだけであれば十分です。 。ANSI出力ストリームを使用しました。使用する必要がありますstd::wcout << L"Blah blah blah some gibberish unicode: ĐĄßĞĝ\n";
また、system( "PAUSE")ではなくstd :: cin.get()を使用してください。