curses에서 한글 출력하기.

Submitted by westporch on Tue, 07/28/2009 - 12:09

소스

#include <ncurses.h>
# go.c
int main(void) 
{ 
    setlocale(LC_CTYPE,"ko_KR.utf8"); 
    initscr(); 
    printw("안녕하세요."); 
    refresh(); 
    getch(); 
    endwin(); 
    return 0;
}


컴파일

localhost:/home/westporch# gcc -o go go.c -lncurses


실행

# ./go
M-m~C~@M-l~^~PM-l~WM-0M-l~JM-5M-l~]~D M-l~K~\M-l~^~QM-m~UM-)M-k~K~HM-k~KM-$.


위와같이 한글이 깨져서 출력되네요. @.@ 
http://kldp.org/node/59797 위 사이트의 답변을 참고하면
setlocale(LC_ALL, "ko_KR.utf8");
setlocale(LC_CTYPE, "ko_KR.utf8");

둘 중에 하나를 추가해주면 된다는데 왜 한글이 깨지는 걸까요?

redneval

Submitted: Tue, 07/28/2009 - 16:46

Modified: Tue, 05/02/2017 - 15:52

KLDP 답변에 설명이 잘 돼있네요.
정리해보면 다음과 같습니다.

1. ncursesw 라이브러리 설치
sudo apt-get install libncursesw5-dev

2. setlocale(LC_ALL, "ko_KR.utf8"); 으로 로케일 설정
3. 소스코드를 UTF-8으로 저장
4. 컴파일할 때 ncursesw로 링크

gcc -o go go.c -lncursesw