ansi 인코딩 질문이요..

.txt 파일을 만들 때 ansi 로 인코딩되도록 하려고 하는데요…

System.IO.File.WriteAllText(strPath, strContents, Encoding.Default);

위의 경우로도 해보고

Encoding encoding = Encoding.Default;
using (StreamWriter writer = new(filePath, false, encoding))
{
writer.Write(text);
}

이 경우로도 해봤지만… 이상하게 .txt 파일로 저장 될 때 utf-8 로 저장이 되거든요

이건 왜 이런걸까요?

2개의 좋아요

검색하니 이렇게 한다네요

Encoding encoding = Encoding.GetEncoding(949);
3개의 좋아요

부연 설명을 좀 더 덧붙이면, 949는 한국어 완성형 (조합형 아님) 코드 페이지를 나타내는 것이며, 한국어 외에도 각국 언어 별로 ANSI 확장 코드 페이지가 존재합니다.

Encoding.Default는 시스템마다 설정이 다를 수 있는데, 설정에 따라 유니코드 인코딩이 쓰일 수도, 949 코드페이지 인코딩 (완성형 한글)이 쓰일 수도, 437 (ASCII) 인코딩이 쓰일 수도 있습니다. 또한, GetEncoding에 지정하는 파라미터 역시 시스템에 설치된 코드 페이지가 무엇인지에 따라 사용 가능 여부가 갈릴 수 있습니다.

안전하게 애플리케이션을 구현하려면, Encoding.GetEncodings Method (System.Text) | Microsoft Learn 문서를 참고하셔서 애플리케이션이 필요로 하는 코드 페이지/인코딩이 시스템에 설치되었는지를 확인하는 종속성 검사 로직이 들어가는 것이 좋습니다.

5개의 좋아요

답변 감사합니다!

1개의 좋아요

답변 감사합니다!!

1개의 좋아요

949 도 안되네요…

System.ArgumentException: ‘949’ is not a supported encoding name.

지원하지 않는 인코딩이라네요 ㅜㅜ

윈도우10 운영채제 쓰고 있는데 os 랑도 연관이 있을까요

1개의 좋아요

코드 페이지 말고
명시적 이름으로 써보세요

CodePage : 949
identifier and name : ks_c_5601-1987


그래도 동일 오류가 발생 한다면

@rkttu 남정현님이 올려주신 링크의 코드 처럼

Encoding.GetEncodings()

로 해당 ksc 인코딩이 현재 시스템에서 지원되는지 확인 후
해당 목록에 안보인다면 현재 시스템에서는 지원되지 않은 인코딩 입니다.

2개의 좋아요

앗 감사합니다!!!

1개의 좋아요