Posted By

ShaneGowland on 07/23/12


Tagged

file text VBNet unicode


Versions (?)

Determine if text file is Unicode encoded


 / Published in: VB.NET
 

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.

  1. Private Function is_unicode(ByVal path As String) As Boolean
  2. Dim enc As System.Text.Encoding = Nothing
  3. Dim file As System.IO.FileStream = New System.IO.FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read)
  4. If file.CanSeek Then
  5. Dim bom As Byte() = New Byte(3) {} ' Get the byte-order mark, if there is one
  6. file.Read(bom, 0, 4)
  7. 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
  8. Return True
  9. Else
  10. Return False
  11. End If
  12.  
  13. ' Now reposition the file cursor back to the start of the file
  14. file.Seek(0, System.IO.SeekOrigin.Begin)
  15. Else
  16. Return False
  17. End If
  18. End Function

Report this snippet  

You need to login to post a comment.