質問

「ハート」、「メモ」などの標準的なASCIIシンボル(最大127)を正しく表示できます。壁(U0205など)の描画に使用できるものも表示したいと思いますが、うまくいきません。どうすれば見せてもらうことができますか?ありがとうございました。

役に立ちましたか?

解決

コンソールモードアプリは、8ビットコードページエンコーディングに制限されています。多くのマシンのデフォルトは、古いIBM PC文字セットと一致するコードページであるIBM437です。 OutputEncodingプロパティを割り当てることにより、コードページを変更できます。

        Console.OutputEncoding = Encoding.UTF8;

しかし、今では通常、フォントに問題があります。コンソールは、IBM PC文字セットを生成するために適切な場所にグリフがある古いデバイスフォントであるターミナルフォントにデフォルトです。 Unicode CodePointsに一致する適切なグリフを生成できる多くのフォントはありません。 Consolasはそれについてで、VistaとWin7で入手できます。

しかし、それはあなたが尋ねていることではありません、私は、あなたが実際に古い箱を描く文字について尋ねていると推測していると思います。コンソールの設定をいじくり回すことなく機能すると、正しいUnicode文字を使用するだけです。これは、コピーアンドペーストを生き延びなければならない例です。

class Program {
    static void Main(string[] args) {
        Console.WriteLine("╒════════╕");
        Console.WriteLine("│ Hello  │");
        Console.WriteLine("│ world  │");
        Console.WriteLine("╘════════╛");
        Console.ReadLine();
    }
}

これらの文字を見つけるには、Windows charmap.exeアプレットを使用します。 「[Advanced View]チェックボックスをクリックし、「[検索]」で[ボックス]を入力します。テキストボックスの検索で、グリッドはボックス描画文字で埋められます。コンソールに適切に変換される最初の使用可能なものは「 u250c」です。

他のヒント

問題は、プログラムではなくコンソールアプリケーションにあるようです。 Windows(cmd.exe)の標準コンソールは、Unicodeを適切にサポートしていないように見えます - たとえば、下の文字列をコピーしてCMD.exeウィンドウに直接貼り付けてみてください。

fußballÖü

PowerShellも同じ問題に苦しんでいるようです。

問題の可能な解決策の1つは、アプリケーションが実行された実際のコンソールを使用する代わりに、「出力コンソール」として使用する専用のウィンドウ/フォームを作成することです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top