⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 txtfileencoding.vb

📁 是可以运行的电子光盘 有程序与PPT介绍 对于学习VB。NET的有参考意义
💻 VB
字号:
Imports Microsoft.VisualBasic
Imports System.IO
Imports System.text
'用于取得一个文本文件的编码方式(Encoding)
Public Class TxtFileEncoding
    '取得一个文本文件的编码方式。如果无法在文件头部找到有效的前导符,Encoding.Default将被返回。
    Public Shared Function GetEncoding(ByVal fileName As String) As Encoding
        Return GetEncoding(fileName, System.Text.Encoding.Default)
    End Function
    ' 取得一个文本文件流的编码方式。
    Public Shared Function GetEncoding(ByVal stream As FileStream) As Encoding
        Return GetEncoding(stream, System.Text.Encoding.Default)
    End Function

    Public Shared Function GetEncoding(ByVal fileName As String, ByVal defaultEncoding As Encoding) As Encoding
        Dim fs As FileStream = New FileStream(fileName, FileMode.Open)
        Dim targetEncoding As Encoding = GetEncoding(fs, defaultEncoding)
        fs.Close()
        fs = Nothing
        Return targetEncoding
    End Function

    Public Shared Function GetEncoding(ByVal stream As FileStream, ByVal defaultEncoding As Encoding) As Encoding
        Dim targetEncoding As Encoding = defaultEncoding
        If (Not IsNothing(stream) And stream.Length >= 2) Then
            '保存文件流的前4个字节
            Dim byte1 As Byte = 0
            Dim byte2 As Byte = 0
            Dim byte3 As Byte = 0
            Dim byte4 As Byte = 0

            '保存当前Seek位置

            Dim origPos As Long = stream.Seek(0, SeekOrigin.Begin)

            stream.Seek(0, SeekOrigin.Begin)

            Dim nByte As Integer = stream.ReadByte()

            byte1 = Convert.ToByte(nByte)

            byte2 = Convert.ToByte(stream.ReadByte())

            If (stream.Length >= 3) Then
                byte3 = Convert.ToByte(stream.ReadByte())
            End If

            If (stream.Length >= 4) Then
                byte4 = Convert.ToByte(stream.ReadByte())
            End If
            '根据文件流的前4个字节判断Encoding

            'Unicode {0xFF(, 0xFE(254)};

            'BE-Unicode {0xFE, 0xFF};

            'UTF8 = {0xEF, 0xBB, 0xBF};
            If (byte1 = 254 And byte2 = 255) Then 'UnicodeBe
                targetEncoding = System.Text.Encoding.BigEndianUnicode
            End If
            If (byte1 = 255 And byte2 = 254 And byte3 <> 255) Then 'Unicode
                targetEncoding = System.Text.Encoding.Unicode
            End If

            If (byte1 = 239 And byte2 = 187 And byte3 = 191) Then 'UTF8
                targetEncoding = System.Text.Encoding.UTF8
            End If
            If (byte1 = 60 And byte2 = 63 And byte3 = 120 And byte4 = 109) Then 'web.config文件编码
                targetEncoding = System.Text.Encoding.UTF8
            End If

            '恢复Seek位置    
            stream.Seek(origPos, SeekOrigin.Begin)
        End If
        Return targetEncoding
    End Function


End Class

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -