InputEncoding/OutputEncodingプロパティを指定することで、標準入出力で使用されるエンコーディングを指定・変更することができます。

Consoleクラスでは、実行環境で用いられる文字コードに基づいて標準入出力のエンコーディングが設定されますが、これとは別のエンコーディングを使用する必要がある場合には、このプロパティを変更します。

このプロパティを指定することで、例えば標準入力には常にShift_JISを用い、標準出力にはUTF-8を用いる、といったことができます。

標準入出力で使用するエンコーディングを変更する
Imports System
Imports System.IO
Imports System.Text

Class Sample
  Shared Sub Main()
    ' 標準入力のエンコーディングにShift_JISを用いる
    Console.InputEncoding = shift_jis

    ' 標準出力のエンコーディングにUTF-8を用いる
    Console.OutputEncoding = Encoding.UTF8

    ' 標準入力の内容すべてを読み込み標準出力に書き込む
    ' (標準入出力を介してShift_JISからUTF-8への変換が行われる)
    Console.Out.Write(Console.In.ReadToEnd())
  End Sub

#If NETFRAMEWORK Then
  Shared ReadOnly shift_jis As Encoding = Encoding.GetEncoding("shift_jis")
#Else
  ' `dotnet add sample.vbproj package System.Text.Encoding.CodePages`
  Shared ReadOnly shift_jis As Encoding = CodePagesEncodingProvider.Instance.GetEncoding("shift_jis")
#End If
End Class
実行結果
>chcp
現在のコード ページ: 932

>type input.shiftjis.txt
こんにちは、世界!

Shift_JISのファイルinput.shiftjis.txtを標準入力に与える
UTF-8で出力される標準出力の内容をoutput.utf8.txtに書き込む
>sample.exe < input.shiftjis.txt > output.utf8.txt

>type output.utf8.txt
縺薙s縺ォ縺。縺ッ縲∽ク也阜・・

>chcp 65001
Active code page: 65001

>type output.utf8.txt
こんにちは、世界!

コンソールの文字コードを変更するコマンドchcpについてはMS-DOSコマンドプロンプトTips §.文字コードの変更を参照してください。

なお、ErrorEncodingプロパティは存在しないため、標準エラーのエンコーディングを指定・変更することはできません。 SetErrorメソッドを使えば任意のTextWriterを指定できるため、目的のエンコーディングを使用するStreamWriterを作成して標準エラーのリダイレクト先として指定する、といったことはできます。

OutputEncodingプロパティにUTF-8などのエンコーディングを指定すると、標準出力にBOM(Byte Order Mark)が出力される場合があります。 この動作はランタイムの種類や実行環境によって異なります。 詳細についてはEncodingクラスとBOMありなしの制御 §.Consoleクラスを参照してください。