プロが教える店舗&オフィスのセキュリティ対策術

visual studioでC# consoleアプリを作成しています。
Console.WriteLineの出力encodingをutf8にしたいのですが、ネットで調べた
Console.OutputEncoding = Encoding.GetEncoding("utf-8");
を挿入すると
次の行のConsole.WriteLine("東京");で例外が発生し、
System.IO.IOException: 'ハンドルが無効です。
となります。
どのようにすれば良いか教えてください。

質問者からの補足コメント

  • 回答ありがとうございました。
    やってみましたが、同じエラーが発生します。

    エラーの出力
    例外がスローされました: 'System.IO.IOException' (mscorlib.dll の中)
    型 'System.IO.IOException' のハンドルされていない例外が mscorlib.dll で発生しました
    ハンドルが無効です。

    質問で書き忘れましたが、visual studio 2019 v16 で実行しています。

    No.1の回答に寄せられた補足コメントです。 補足日時:2023/02/16 07:40

A 回答 (1件)

この例外は、Consoleオブジェクトが無効なハンドルを使用しているために発生している可能性があります。

この問題を解決するためには、次のようにコードを変更して、コンソールに対するアクセスが確立される前にEncodingを設定する必要があります。

using System;
using System.Text;

class Program
{
static void Main(string[] args)
{
Console.OutputEncoding = Encoding.UTF8;
Console.WriteLine("東京");
}
}


このように、Console.OutputEncodingを設定する前に、Console.WriteLineメソッドを呼び出すことはできません。また、Encoding.GetEncoding("utf-8")の代わりにEncoding.UTF8を使用することもできます。これは、同じエンコーディングを取得するためのより簡単な方法です。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!