1

.NET コンソール アプリケーションが入力ファイルを読み取る際に使用するエンコーディングを設定するにはどうすればよいですか?

私は UTF16 ファイルを持っていますが、呼び出すConsole.ReadLineと、エンコーディングが適切に監視されていないことが明らかです。その呼び出しからの文字列は見栄えが悪いです。

Sublime Text 2 は、ファイルが次のようにエンコードされていることを報告します。

UTF-16 LE with BOM

コードは次のとおりです。

    pstrLine = Console.ReadLine() //bad line here

    Do
        pactHandler(pstrLine)
        pstrLine = Console.ReadLine()
    Loop Until pstrLine Is Nothing

セリフが返ってきて読めるが、ちょっと違う。すべての文字の間にスペースがあるようです。そして、行は印刷できない文字で始まります。

入力ファイルを見ると、次のようになります。

MY DATA IS HERE

経由で入ってくる場合ReadLine

$M Y  D A T A  I S  H E R E

$ブロックのように見える印刷できない文字を表します。

4

1 に答える 1

0

System.Consoleクラスには と のプロパティがありInputEncodingますOutputEncoding

これらのプロパティの値はUnicodeEncoding、コンストラクターにビッグ エンディアンとバイト オーダー マークの 2 つの bool を指定するオブジェクトで指定します。

Imports System.Text
Imports System.IO

Dim Utf16LeBom = New UnicodeEncoding(False, True)
Console.InputEncoding = Utf16LeBom
Console.OutputEncoding = Utf16LeBom
Console.ReadLine()

を使用してストリームから読み取るようにコードを変更する場合は、同じオブジェクトStreamReaderを使用できます。UnicodeEncoding

于 2013-09-05T15:04:34.340 に答える