如何在Windows环境中检查.txt文件是ASCII格式还是UTF-8格式?

时间:2011-08-04 19:53:37

标签: .net windows

我已使用UltraEdit将.txt文件从ASCII转换为UTF-8。但是,我不确定如何在Windows环境中验证它是否为UTF-8格式。

谢谢!

6 个答案:

答案 0 :(得分:21)

在记事本中打开该文件。点击“另存为...”。在“编码:”组合框中,您将看到当前的文件格式。

答案 1 :(得分:8)

Windows中的文本文件没有格式。有一个非官方的约定,如果文件以BOM codepoint in UTF-8 format开头,它是UTF-8,但该约定不是普遍支持的。这将是3字节序列"\xef\xbf\xbe",即Latin-1字符集中的￾

答案 2 :(得分:8)

使用Notepad ++打开文件并选中“编码”菜单,您可以检查当前的编码和/或转换为一组可用的编码。

答案 3 :(得分:7)

在十六进制编辑器中打开它,确保前三个字节是UTF8 BOMEF BB BF

答案 4 :(得分:2)

如果您使用Windows 10并具有Windows子系统(适用于Linux的Windows子系统),则可以通过在外壳程序中键入“ file”来轻松实现。

例如:

$ file code.cpp

code.cpp: C source, UTF-8 Unicode (with BOM) text, with CRLF line terminators

答案 5 :(得分:0)

我有一个要检查的文件目录。我创建了一个Excel宏来确定ANSI与UTF-8。这对我有用。

        Sub GetTextFileEncoding()
        Dim sFile As String
        Dim sPath As String
        Dim sTextLine As String
        Dim iRow As Integer

        'Set Defaults and Initial Values
        iRow = 1
        sPath = "C:textfiles\"
        sFile = Dir(sPath & "*.txt")

        Do While Len(sFile) > 0
            'Get FileType
            'Debug.Print sFile & " - " & FileEncodeType(sPath & sFile)

            'Show on Excel Worksheet
            Cells(iRow, 1).Value = sFile
            Cells(iRow, 2).Value = FileEncodeType(sPath & sFile)

            'Get next file
            sFile = Dir

            'Increment Row
            iRow = iRow + 1
        Loop
    End Sub

    Function FileEncodeType(sFile As String) As String
        Dim bEF As Boolean
        Dim bBB As Boolean
        Dim bBF As Boolean

        bEF = False
        bBB = False
        bBF = False

        Open sFile For Input As #1
            If Not EOF(1) Then
                'Read first line
                Line Input #1, textline
                'Debug.Print textline
                For i = 1 To 3
                    'Debug.Print Asc(Mid(textline, i, 1)) & " - " & Mid(textline, i, 1)
                    Select Case i
                        Case 1
                            If Asc(Mid(textline, i, 1)) = 239 Then
                                bEF = True
                            End If
                        Case 2
                             If Asc(Mid(textline, i, 1)) = 187 Then
                                bBB = True
                            End If
                        Case 3
                             If Asc(Mid(textline, i, 1)) = 191 Then
                                bBF = True
                            End If
                        Case 4

                    End Select
                Next
            End If
        Close #1

        If bEF And bBB And bBF Then
            FileEncodeType = "UTF-8"
        Else
            FileEncodeType = "ANSI"
        End If
    End Function