コンソールにUnicode文字を書き込む方法は?


150

コンソールアプリケーションで、.NETを使用するような文字を書くことが可能かどうか疑問に思いました。この文字を書き込もうとすると、コンソールに疑問符が出力されます。

回答:


201

出力エンコーディングがASCIIに設定されている可能性があります。出力を送信する前にこれを試してください:

Console.OutputEncoding = System.Text.Encoding.UTF8;

(サポートドキュメントへのMSDN リンク。)

そして、ここにあなたが便利な小さなコンソールテストアプリがあります:

C#

using System;
using System.Text;

public static class ConsoleOutputTest {
    public static void Main() {
        Console.OutputEncoding = System.Text.Encoding.UTF8;
        for (var i = 0; i <= 1000; i++) {
            Console.Write(Strings.ChrW(i));
            if (i % 50 == 0) { // break every 50 chars
                Console.WriteLine();
            }
        }
        Console.ReadKey();
    }
}

VB.NET

imports Microsoft.VisualBasic
imports System

public module ConsoleOutputTest 
    Sub Main()
        Console.OutputEncoding = System.Text.Encoding.UTF8
        dim i as integer
        for i = 0 to 1000
            Console.Write(ChrW(i))
            if i mod 50 = 0 'break every 50 chars 
                Console.WriteLine()
            end if
        next
    Console.ReadKey()
    End Sub
end module

また、選択したコンソールフォントがその特定の文字をサポートしていない可能性もあります。Windowsツールバーメニュー(C :.のようなアイコン)をクリックし、[プロパティ]-> [フォント]を選択します。他のフォントを試して、文字が正しく表示されるかどうかを確認します。

コンソールのフォント編集の画像


3
Console.OutputEncodingEncoding.Unicode(UTF-16)には設定できません。Encoding.UTF8ただし、可能です。
Saeb Amini、2012

3
.NET 4.5以降ではUTF-16もサポートされています
Sami Kuhmonen

4
うーん、これは私にはうまくいきません。私はヒンディー語または韓国語を印刷しようとしていますが、運が悪い
Quincy

1
フォントを切り替えた後に効果を確認するには、アプリの再起動が必要になる場合があります。
マイク・ケスキノフ2015

2
@Cel:NSimSunは中国語と日本語(および英語)で動作することがわかりました。
kjhughes

11

MSDNでエレガントなソリューションを見つけました

System.Console.Write('\uXXXX') //XXXX is hex Unicode for character

このシンプルなプログラムは、画面上に℃を書き込みます。

using System;

public class Test
{
    public static void Main()
    {
        Console.Write('\u2103'); //℃ character code
    }
}

2
それは本当に素晴らしいです!しかし、私は受け入れられた答えはまだ当てはまると思います-コンソールが使用しているフォントがユニコード文字をサポートしていない場合、この例は機能しないと思います。ただし、現時点ではWindowsコンピューターにアクセスできないため、確認できません。
Sam

はい、サムは正しいと思います。たとえば、コマンドプロンプトフォントが私の文字セットをサポートしていないという事実に行き詰まりました。
Veverke 2015


8

しかも Console.OutputEncoding = System.Text.Encoding.UTF8;

一部の文字については、追加のフォント(つまり、中国語)をインストールする必要があります。

Windows 10最初に行く地域と言語の設定や必要な言語のサポートをインストールします。 ここに画像の説明を入力してください

その後、コマンドプロンプトのプロポーティ(または必要に応じてデフォルト)に移動し、言語をサポートするフォント(中国語の場合はKaiTi など)を選択します。 ここに画像の説明を入力してください

これで準備が整いました: ここに画像の説明を入力してください


どうもありがとう。コンソールフォントを変更するのが私にとっての修正です:)(また、コンソールをUTF-8を使用するように設定します)
Franva

0

これは私にとってはうまくいきます:

Console.OutputEncoding = System.Text.Encoding.Default;

一部の記号を表示するには、コマンドプロンプトのフォントをLucida Consoleに設定する必要があります。

  1. コマンドプロンプトを開きます。

  2. コマンドプロンプトの上部バーを右クリックします。

  3. [プロパティ]をクリックします。

  4. フォントがラスターフォントに設定されている場合は、それをLucida Consoleに変更します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.