[C#] ANSI Encoding로 파일 저장하기

2011. 7. 18. 13:02Others/C# 일반

엑셀에서 열리는 csv파일을 작성하거나, 전자신고 파일을 작성할 때와 같이 파일을 저장할 때 Encoding을 ANSI로 지정해야 하는 경우가 있습니다.(한국의 경우 대부분 ANSI 949 )

C#에서는 기본적으로 UTF-8 Encoding을 이용하여 파일을 저장하는데 아래와 같이 Encoding.Default로 Encoding Type를 지정하면 ANSI로 저장됩니다.

//ANSI Encoding 파일을 저장
System.IO.File.WriteAllText(strPath, strContents, Encoding.Default);

물론 해당 파일을 읽을 때도 동일하게 Encoding를 지정해주어야 한다는 사실 잊지 마세요!

//ANSI Encoding 파일을 읽음
string strContents = System.IO.File.ReadAllText(strPath, Encoding.Default);

위에서 사용한 System.Text.Encoding.Default는 다음과 같이 현재 이용 중인 운영체제의 ANSI Code Page를 의미합니다. (ASCII와 다름에 유의)

또 한가지 유의해서 구분해야 하는 것은 위와 같이 파일을 읽어 변수에 담았다고 해도, 변수에 담긴 문자열은 UTF-8이라는 사실입니다. 변수에 담긴 문자열 값을 특정 Encoding으로 담으려면 다음과 같이 System.Text.Encoding을 이용하시면 됩니다.

//UTF-8 Encoding의 문자열을 ANSI Encoding으로 변환
byte[] arrSource = System.Text.Encoding.Default.GetBytes(strContents);
byte[] arrANSIContents = System.Text.Encoding.Convert(Encoding.UTF8, Encoding.Default, arrSource);