한글문자열을 요소로 갖는 리스트에서...

텍스트 화일을 한줄 읽어들이고, 읽어 들인 line에 찾고자 하는 단어가 있는지 없는지를 출력하고자 합니다.
대충...

import IO

main = do x <- openFile "C:\\ghc\\works\\09092.txt" ReadMode
          y <- hGetLine x
          putStrLn y
          elem "조합구분" y

에러는 다음과 같습니다.

C:\ghc\works>ghc test.hs -o test.exe
test.hs:18:17: lexical error in string/character literal (UTF-8 decoding error)

09092.txt은 다음과 같습니다.
성명 조합구분 입사일 퇴사일 월 화 수 목 금 토
*** ****** 19****** 어쩌고 저쩌고 각 사원별의 개인 데이터.

한글을 사용하는 것이 문제일까요?
이를 어떤 식으로 처리하면 될까요?

현재는 테스트중이지만, 궁극적으로는 사원 개개인의 데이터를 cvs 화일에서 읽어들여서 특정 조합구분인 사람에 대한 특정 처리를 하는 프로그램을 만들고자 합니다.
고수님들의 가르침을 청합니다.
감사합니다.

댓글 보기 옵션

원하시는 댓글 전시 방법을 선택한 다음 "설정 저장"을 누르셔서 적용하십시오.

소스코드와 CSV

소스코드와 CSV 파일이 UTF-8이 아니라 CP949나 EUC-KR로 인코딩되어 있어서 그런 것 같습니다. 그런 경우라면 인코딩을 바꿔주셔야 합니다.

감사합니다.

말씀대로 하니 해결이 되었습니다.
한가지 문제가 추가로 생기더군요.
프로그램 연습을 windows의 CMD에서 작업을 하고 있었는데, 여기서 한글이 깨져서 출력이 되더군요.
급한대로 찾아보니
1. CMD.exe /U 옵션으로 기동한다.
2. chcp 65001 로 변경한다.
사용한다... 인데, 한글이 제대로 나오지만 좀 이상합니다.
아래와 같이 반복해서 나오네요.
역시 다시 리눅스로 갈아타야 하나요? 문제는 업무상 윈도가 아니면 안되는 일이라(우리나라 관공서는 왜 엑티브 엑스가 아니면 아무것도 안되게 만들어 놓았을 까요?)...

C:\ghc\works>test.exe
수진자명 조합구분 입원일 퇴원일  월 화 수 목 금 토
원일 퇴원일  월 화 수 목 금 토
� 화 수 목 금 토
� 금 토
토
�

C:\ghc\works>

test.exe > filename 처럼

test.exe > filename 처럼 하셔서 파일로 저장한 다음에 메모장 같은 걸로 열어보셔서 거기서도 깨져 나오는지 확인해보시면 프로그램에 문제가 있는지 CMD에 문제가 있는지 알 수 있지 않을까 합니다.

감사합니다.

그런방법이 있었네요.
말씀대로 해 보니, CMD의 show()의 문제인 듯 합니다.
redirection으로 깨끗하게 해결이 됩니다.
감사합니다.

즐거운 추석 되세요~ m(_ _)m

GHC에서 UTF-8 사용하려면 utf8-string 을

일단 앞서 댓글 달아주신 분 말씀대로 UTF8로 인코딩을 한 상태이어야 하고요, utf8-string 패키지에 있는 encodeString, decodeString 등을 사용해야 합니다. 지금 새로 구현하고 있는 하스켈 IO 라이브러리에는 인코딩을 지원하는 인터페이스를 만들고 있긴 한데 아직까진 그런 게 따로 없어서 일단은 다들 utf8-string 이라는 라이브러리를 쓰고 있습니다. 약간 불편하긴 합니다만 저게 현재로서 대부분의 사람들이 쓰는 해결책입니다.

http://hackage.haskell.org/package/memscript 다음 패키지의 소스를 참조하시면 utf8-string 라이브러리의 사용법을 참고하실 수 있습니다.

http://hackage.haskell.org/package/utf8-string 이곳에 utf8-string 라이브러리 패키지고요.

감사합니다.

추석을 지내고 오니 또 다른 새로운 정보를 접할 수 있었습니다.
감사합니다.
정말... 프로그램의 끝은 깊다는 것을 새삼 느꼈습니다.