Return to Snippet

Revision: 58592
at July 23, 2012 18:18 by ShaneGowland


Initial Code
Private Function is_unicode(ByVal path As String) As Boolean
        Dim enc As System.Text.Encoding = Nothing
        Dim file As System.IO.FileStream = New System.IO.FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read)
        If file.CanSeek Then
            Dim bom As Byte() = New Byte(3) {} ' Get the byte-order mark, if there is one
            file.Read(bom, 0, 4)
            If (bom(0) = &HEF AndAlso bom(1) = &HBB AndAlso bom(2) = &HBF) OrElse (bom(0) = &HFF AndAlso bom(1) = &HFE) OrElse (bom(0) = &HFE AndAlso bom(1) = &HFF) OrElse (bom(0) = 0 AndAlso bom(1) = 0 AndAlso bom(2) = &HFE AndAlso bom(3) = &HFF) Then ' ucs-4
                Return True
            Else
                Return False
            End If

            ' Now reposition the file cursor back to the start of the file
            file.Seek(0, System.IO.SeekOrigin.Begin)
        Else
            Return False
        End If
    End Function

Initial URL

                                

Initial Description
The .NET Framework doesn't support automatic detection of character encoding in the default file I/O methods. This is a quick function that returns True in the specified file is Unicode.

Initial Title
Determine if text file is Unicode encoded

Initial Tags
file, text

Initial Language
VB.NET