텍스트파일 인코딩 확인 후 다르면 변경하기
글 작성자: 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로 변환하는 프로그램을 만들었습니다
반응형
댓글
이 글 공유하기
다른 글
-
메서드 인수 이름 입력
메서드 인수 이름 입력
2018.06.12 -
[HTTP] JSON POST 데이터가 덜 전달되던 현상
[HTTP] JSON POST 데이터가 덜 전달되던 현상
2017.09.08