C#/WPF
[WPF] 한글 Encoding ANSI / UTF8
HJ0216
2024. 4. 22. 22:13
프로젝트를 하다가 대용량 데이터를 다운로드할 때, 가끔 UI가 멈추는 현상이 발생했습니다.
마침 이와 관련해서 연습해보면 좋은 글이 있어 실습을 진행하는데, 문제가 코드가 아닌 파일에서 발생했습니다.
글에서는 영어로 된 데이터를 사용하지만, 저는 마침 한글로 된 대용량 파일이 있어 사용을 했던 게 문제가 되었습니다.
인코딩이 제대로 되지 않아 한글이 나오지 않는 문제였습니다.
간단하게 파일 인코딩 형식 변환과 지정하는 방법을 다루고자 합니다.
* 파일 인코딩 변환방식 변경
1. .csv 파일을 메모장으로 열기
2. 다른 이름으로 저장에서 ANSI → UTF8로 Encoding 방식 변경
* C#코드에서 Encoding 타입 명시
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
using(var reader = new StreamReader(fileName, Encoding.UTF8))
{
while (!reader.EndOfStream)
{
string line = reader.ReadLine();
if(line != null)
{
DataModel model = GetDataModel(line);
returnDatas.Add(model);
}
}
reader.Close();
}
|
⭐ 중요한 점은 Encoding.Default를 사용할 경우, ANSI가 적용되어 한글이 깨져서 나옵니다.
UTF8을 직접 명시해줘야 합니다.
ANSI와 UTF8 차이
* ANSI
* American National Standards Institute
* 주로 영어 알파벳을 위한 ASCII 코드에 몇몇 추가 문자를 포함하는 인코딩 방식들
* UTF8
* 8-bit Unicode Transformation Format
* 유니코드를 사용하여 전 세계의 모든 문자를 포함할 수 있는 인코딩 방식
⭐ ANSI는 특정 지역의 문자 집합에 제한되어 있는 반면, UTF-8은 전 세계의 모든 문자를 지원