2016-11-24 6 views
1

私は、CMDウィンドウで人生のゲームをプレイするWin32コンソールアプリケーションを持っています。Visual Studio 15コンソールアプリケーションでボックスの高ASCII文字を使用する方法は?

(186:║)、(187:╗)(188:╝)、(200:╚)、(201:╚)などの標準的なボックス描画文字の一部を使用して、 :╔)、(205:=)、どこにも行きません。 「警告C4566:ユニバーサル文字名が表す文字 『\ u2551』は、現在のコードページ(1252年)で表すことができない」

コードが実行される

まず、ビルド時に私は、次のような警告を取得しますボックス描画文字の代わりに何か他のものが表示されます。私は見つけることができる多くのプロパティを見渡しましたが、現在のコードページを変更する場所が見つかりませんでした。

どのように変更するかについてのアイデアはありますか?それとも、Windowsでおそらく変更する必要があるのでしょうか?私はWin 7 Proを実行しています。

私はVSエディタのコードページを850(Western European DOS)に変更しましたが、実行可能ファイルには影響しませんでした。

答えて

0

Nota Bene: "high ASCII"とは意味がありません。

最後に、コンソールに、使用するエンコードと文字をサポートするフォントが選択されている必要があります。これは1981年以来ボックス描画文字の問題ではないはずですが、コンソール設定を調べてcharmapを使用して確認できます。

デフォルトのC#ソースファイルエンコーディングを混乱させないのが最善です。 UTF-8は素晴らしいです。

次に、ソースコードで使用する文字をリテラルUTF-16コード単位で使用します。したがって、186の代わりに "║"が必要ですが、 "\ u2551"にする必要があります。コードを読みやすくする。

何らかの形でサポートされていないか使用しにくい場合を除き、出力にUTF-8を使用することをお勧めします。

できる場合は、chcp 65001コマンドを使用して、コンソールエンコーディングをUTF-8に変更してください。できない場合は、Console.OutputEncodingをコンソールが使用しているもの(コードページ437など)に戻して変更してください。


ここでは例です:

class Program 
{ 
    static void Main(string[] args) 
    { 
     var codePage = Console.OutputEncoding.CodePage.ToString(); 
     var length = codePage.Length; 
     Console.WriteLine($"╔{new String('═', length)}╗"); 
     Console.WriteLine($"║{codePage}║"); 
     Console.WriteLine($"╚{new String('═', length)}╝"); 
    } 
} 

私はcmd.exeの中に65001をCHCPん後それは、これを表示します。

╔═════╗ 
║65001║ 
╚═════╝ 

そして、これ、私がCHCP最初に行うことなく、それを実行した場合:

╔═══╗ 
║437║ 
╚═══╝ 

この後、chcpを実行した後cmd.exeで850:

╔═══╗ 
║850║ 
╚═══╝ 
+0

Visual Studioで開いたコンソールウィンドウでは、Altキーパッドで入力できるのでボックスの描画文字がサポートされています。ソースでは、私は '║'を使用しています。数値ではなく、 '\ uWhatever'と解釈するビジュアルスタジオです。 – JSz

+0

同じコンソールをcmd.exeで開くと、chcpを実行できます。 –

関連する問題