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对象的构造函数提供两个布尔值:大端序和字节顺序标记。

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 回答