NET中判断一个文本文件的编码方式

本文介绍如何通过文件头部的特定字节来识别Windows文件的编码格式,包括Unicode的小尾编码、大尾编码及UTF-8编码,并提供了一段C#代码实现。
文件的字符集在Windows下有两种,一种是ANSI,一种Unicode。
对于Unicode,Windows支持了它的三种编码方式,一种是小尾编码(Unicode),一种是大尾编码(BigEndianUnicode),一种是UTF-8编码。
我们可以从文件的头部来区分一个文件是属于哪种编码。当头部开始的两个字节为 FF FE时,是Unicode的小尾编码;当头部的两个字节为FE FF时,是Unicode的大尾编码;当头部两个字节为EF BB时,是Unicode的UTF-8编码;当它不为这些时,则是ANSI编码。
按照如上所说,我们可以通过读取文件头的两个字节来判断文件的编码格式,代码如下(C#代码):

程序中System.Text.Encoding.Default是指操作系统的当前 ANSI 代码页的编码。

Public Shared Function GetFileEncodeType(ByVal stream As Stream) As Encoding
    Dim buffer() As Byte
    Using br As New BinaryReader(stream)
        buffer = br.ReadBytes(2)
        br.Close()
    End Using
    If buffer(0) >= &HEF Then
        If buffer(0) = &HEF AndAlso buffer(1) = &HBB Then
            Return Encoding.UTF8
        ElseIf buffer(0) = &HFE AndAlso buffer(1) = &HFF Then
            Return Encoding.BigEndianUnicode
        ElseIf buffer(0) = &HFF AndAlso buffer(1) = &HFE Then
            Return Encoding.Unicode
        Else
            Return Encoding.Default
        End If
    Else
        Return Encoding.Default
    End If
End Function


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值