글 작성자: HEROHJK

현재 회사에서 제가 개발하는 프로그램이 MFC로 제작된 프로그램인데,


텍스트파일을 읽는데 유니코드로 되어있으면 에러를 뿜고 프로그램이 다운되는 상태가 발생되었습니다.


텍스트파일은 서버에서 MFC 클라이언트로 전송을 하기에 서버에 올릴 텍스트파일의 인코딩을 확인해서euc-kr이 아닐때 euc-kr로 바꿔줘야 했습니다.


그래서 두가지를 찾아보았습니다.


1. 텍스트파일의 인코딩 확인


2. euc-kr이 아닐때, euc-kr로 변환


먼저 텍스트파일인코딩 확인은 아래처럼 하면 됩니다.


private static Encoding GetTextEncodingInfo(string path)
        {
            Encoding enc;
            using (StreamReader sr = new StreamReader(path, true))
            {
                enc = sr.CurrentEncoding;
                sr.Close();
            }

            return enc;
        }


그리고 euc-kr로 바꾸는거는 다음처럼 하면 됩니다.


public static void SaveToEUC_KR(string textFilePath)
        {
            using (StreamReader sr = new StreamReader(textFilePath))
            {
                using (StreamWriter sw = new StreamWriter(textFilePath + "temp", false, Encoding.GetEncoding("euc-kr")))
                {
                    sw.WriteLine(sr.ReadToEnd());
                    sw.Close();
                    sw.Dispose();
                }
                sr.Close();
            }

            File.Delete(textFilePath);
            File.Move(textFilePath + "temp", textFilePath);
        }


이후 다음처럼 하면 되겠죠?


static void Main()
        {
            Encoding encoding = GetTextEncodingInfo("car.txt");

            if(encoding == Encoding.UTF8) SaveToEUC_KR("car.txt");
        }


이렇게 해서 UTF8을 euc-kr로 변환하는 프로그램을 만들었습니다

반응형