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。
我有一个问题,我将 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。