VB Streamwriter 设置为 ISO-8859-1 但文件得到 UTF8-Without Bom 编码

VB Streamwriter set to ISO-8859-1 but file get UTF8-Without Bom encoding

我有一个问题,我将 streawriter 设置为写入 ISO-8853-1,但文件使用 utf8 编码。请参阅下面的代码:

在声明 str 时,我将其设置为 iso-8853-1,当我检查输出文件编码时,我得到 UTF8-without bom。

Imports System.Text
Imports System.IO

Module Module1

Sub Main()
    Using str = New StreamWriter("C:\blabla.txt", False, encoding.GetEncoding("ISO-8859-1"))
        str.Write("23124124AÖ")
        Dim encoding = str.Encoding
        str.Close()
    End Using

    Dim currentEncoding = GetFileEncoding("C:\blabla.txt")
End Sub
    Public Function GetFileEncoding(filePath As String) As Encoding
        Using sr As StreamReader = New StreamReader(filePath, True)
            sr.Read()
            Return sr.CurrentEncoding
        End Using
    End Function
End Module

您必须将编码传递给读取器和写入器的构造函数是有原因的。文件本身没有编码。 它们只是字节的集合。

这取决于选择一种编码,来说明你想对这些字节进行什么样的解释。您打开 StreamReader 时未指定编码,因此它默认为 UTF-8。