시간을 기록하다

블로그 이미지
by 기록자
  • 18,064Total hit
  • 31Today hit
  • 31Yesterday hit

C#에서 텍스트 파일을 처리할 경우 인코딩 때문에 한동안 끙끙거렸던 기억이 있다.
영문의 경우 StreamReader 를 사용하면 아무런 문제없이 정상적으로 읽혀졌으나, 한글의 경우 문자가 깨져버려서 데이터를 정상적으로 읽을 수 없는 것이었다.

아래 그림은 예를 보이기 위해 만든 텍스트 파일의 내용이다.
사용자 삽입 이미지
위 그림과 같은 텍스트 파일을 테스트용으로 만들었다.

아래 그림은 텍스트 파일을 읽기 위해 간단히 작성한 소스코드이다.
사용자 삽입 이미지
위와 같이 작성한 코드를 컴파일 후 실행시켜보면 아래와 같이 나온다.
사용자 삽입 이미지
위 그림에서 알 수 있듯이 영문은 상관이 없으나 한글의 경우 모두 깨져버린다.
아마도 이것은 영어가 아닌 언어에 대해서는 모두 같은 결과가 나타날 것이다.

이렇게 텍스트 파일에서 읽어들일 때 한글이 깨져버리는 문제로 인해 한참을 찾아보았다.
하지만 인터넷에서도 그다지 이에대한 내용을 찾기 힘들었고 책에서도 찾아볼 수 없었다.
그렇게 삽질을 하던 중 문득 StreamReader 의 생성자 옵션에 뭔가 있지 않을까 하는 생각이 들었다.
아니나 다를까 StreamReader 의 생성자에 인코딩에 대한 옵션이 있었다.
그래서 위의 소스코드를 아래와 같이 수정하였다.
사용자 삽입 이미지
위 소스코드에서 빨간색으로 표시된 부분이 추가된 부분이다.
여기서 Default 로 설정한다는 것은 운영체제에서의 Default 를 말한다.
즉, 한글 윈도우즈를 사용한다면 Default 로 설정하면 된다.
Encoding 의 옵션에서는 UTF-8, Unicode 등의 몇가지 옵션을 선택할 수 있다.
위와 같이 수정한 후 결과를 출력해보면 아래와 같다.
사용자 삽입 이미지
수정된 소스코드의 실행 결과는 위 그림과 같이 한글이 정상적으로 읽혀지는 것을 알 수 있다.



이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.
TRACKBACK 1 AND COMMENT 2

ARTICLE CATEGORY

분류 전체보기 (42)
개발 노트 (1)
초보의 알고리즘 (17)
프로그래밍 팁 (13)
기타 등등등등등 (11)

CALENDAR

«   2010/03   »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

ARCHIVE

LINK