2016-07-24 27 views
0

私は初心者のプログラマーであり、私は単純なゲームに取り組んでいます。私はコンソールに + █Altキーのような出力Unicodeのシンボルにしたいです。私はWindows 10でCodeBlocksを使用しており、GNU GCCコンパイラを使用しています。ここ は、私がやろうとしているものです:私は、コンソール上で何を得るUnicodeが正しく出力されない(Windows 10)

#include <iostream> 

using namespace std; 

int main() 
{ 
    cout << "\u2588"; 
    return 0; 
} 

は、いくつかの奇妙なシンボルです。これは他のUnicode文字でも発生しますが、シンボルは異なります。

私はwcoutを使ってみましたが、代わりに空白スペースがあります。

私はまた、このようなことを試みた:

_setmode(_fileno(stdout), _O_U16TEXT); 

をしかし、私は、私はこのために必要であると思わライブラリインポートかかわら_fileno_O_U16TEXTは、宣言されていないというようなエラーを取得:

#include <iostream> 
#include <io.h> 
#include <fcntl.h> 
#include <fstream> 

私のゲームでは、Unicodeのシンボルは完全に必要なわけではありませんが、もっと見栄えがいいだけです。

+1

重複していませんが、http://stackoverflow.com/questions/388490/unicode-characters-in-windows-command-line-how –

+1

の読み込みがあります。[WindowsコンソールアプリケーションでUnicode文字列を出力する]可能な複製(http://stackoverflow.com/questions/2492077/output-unicode-strings-in-windows-console-app) – roeland

答えて

0

Windowsコマンドプロンプトでは、デフォルトでエンコードとしてCP850が使用されており、このシンボルまたはそのユニコードシンボルを正しく表示することはできません。unless you change it

しかし、それ自身のバージョンの\xDBがあります。これはおそらくあなたが探しているものです。

charmap.exeを開き、フォントTerminalをチェックすると、CP850と互換性があり、そこに表示されているのと同じ方法でコマンドプロンプトの下に表示される便利なシンボルがあります。

+0

Windowsコマンドプロンプトは、デフォルトでANSIエンコーディングを使用します。これは、Windowsのローカリゼーションによって異なります。 CP850は西ヨーロッパのデフォルトです。米国ではCP437です。'chcp'コマンドは現在のコードページを表示します。 –

+0

ありがとう、それは完全に動作します –

+0

そして別のもの:どのように私が使用しなければならない文字コードを知っている? charmapはフルブロック█のコードをU + 2588として表示しますが、そのためには '\ xDB'が必要です。 –

0

std::coutwchar_t(16ビット長)の文字を印刷しようとしているのは、char(8ビット長)のみです。 std::coutの代わりにstd::wcoutを使用し、wcoutはワイド文字を意味します。

+0

私はwcoutでこれを試しましたが、\ u256以下に行かない限り、何も出力されません。私は\ u257以上を試しても何も出力しないか、複数のシンボルを出力します。 –

0

その他の答えでは、文字列をUTF-16リテラルとして扱っています。 Windowsのコンソールがでないことを

#include <iostream> 

using namespace std; 

int main() 
{ 
    cout << u8"\u2588"; 
    return 0; 
} 

注:また、UTF-8リテラルu8でそれを付けることによって(UTF-8として、その中のすべての文字をエンコードするためにそれを強制する)としてそれを治療するためのコンパイラに伝えることができますデフォルトは出力をutf-8として扱うように設定されているため、これはいくつかの追加の設定なしでは正しく表示されません。

関連する問題