첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

▶ 텍스트 파일 인코딩 구하기 예제

using System;
using System.Text;

string filePath = "c:\\sample.txt";

Encoding encoding = GetTextFileEncoding(filePath);

Console.WriteLine(encoding.EncodingName);

 

728x90

 

▶ 텍스트 파일 인코딩 구하기

using System.IO;
using System.Text;

#region 텍스트 파일 인코딩 구하기 - GetTextFileEncoding(filePath)

/// <summary>
/// 텍스트 파일 인코딩 구하기
/// </summary>
/// <param name="filePath">파일 경로</param>
/// <returns>텍스트 파일 인코딩</returns>
public Encoding GetTextFileEncoding(string filePath)
{
    byte[] bomByteArrat = new byte[4];

    using(FileStream stream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
    {
        stream.Read(bomByteArrat, 0, 4);
    }

    if(bomByteArrat[0] == 0x2b && bomByteArrat[1] == 0x2f && bomByteArrat[2] == 0x76)
    {
        return Encoding.UTF7;
    }

    if(bomByteArrat[0] == 0xef && bomByteArrat[1] == 0xbb && bomByteArrat[2] == 0xbf)
    {
        return Encoding.UTF8;
    }

    if(bomByteArrat[0] == 0xff && bomByteArrat[1] == 0xfe)
    {
        return Encoding.Unicode; // UTF-16LE
    }

    if(bomByteArrat[0] == 0xfe && bomByteArrat[1] == 0xff)
    {
        return Encoding.BigEndianUnicode; // UTF-16BE
    }

    if(bomByteArrat[0] == 0 && bomByteArrat[1] == 0 && bomByteArrat[2] == 0xfe && bomByteArrat[3] == 0xff)
    {
        return Encoding.UTF32;
    }

    return Encoding.ASCII;
}

#endregion
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요