[초보]NCURSES 에서 한글출력 어떻게 하나요.

등짝을보자의 이미지

물어볼데가 없어서 이렇게 글올립니다.. oops

말그대로 ncurses 로요...

printw("헬로우");

이렇게 출력하니 깨진 한글이 출력되더군요..

안깨지게 원판그대로 출력은 어떻게 하나요??

음..제가.....수준 떨어지는 질문을 하는거같네요..

답변 달리면 지워야겠어요......

la9527의 이미지

한글은 컴파일할때 ncursesw로 링크해야 합니다.

-lncuresew

euckr 일경우 상관은 없지만, utf8일 경우 깨지게 됩니다.
이때 위의 ncursesw로 링크해야 합니다.

관련된것은 kldp.net의 Mls 프로젝트를 참조하세요. ^^

등짝을보자의 이미지

그래도 이상하게 깨지는군요..ㅡ.ㅡ;;

어떻게 된건지..

gcc test.c -lncursesw

이렇게 컴파일 했는데 여전히 깨지더라구요...

텍스트 편집기로 열어서 euckr 로 저장했거든요..


감비노도 궁금해하더라구..등짝!..등짝을보자!..

tinywolf의 이미지

음.. utf8이면 ncursesw로 링크하고.. euckr이면 ncurses로 링크하면 된다는 말씀이 아닐까요..

ㅡ_ㅡ;

익명 사용자의 이미지

ncurces의 헤더파일이 좀 특이한데..
ncurces.h 가 ncurses용이 따로 있고, ncursesw용이 따로 있습니다.
파일이름은 같구요.

헤더파일이 틀리니 헤더파일도 올바른 곳으로 해줘야 할듯 싶네요.
보통 깔리면 /usr/include/ncursesw/ncurces.h 로 되겠네요.
아마 비교해 보시면 헤더파일이 약간 다를 것입니다.

배포판의 파일보기를 참조해보세요.
우분투나 데비안이면 dpkg -L ncuresew-dev 일듯 싶네요.

등짝을보자의 이미지

저기..그러니깐...무슨말씀이신지..-_-;;

이해을 못하겠습니다... oops

가르침을....


감비노도 궁금해하더라구..등짝!..등짝을보자!..

등짝을보자의 이미지

잊고 지내다가 요번에 갑자기 생각나서..
또 찾아해매고 있는데요..
왜 안되는건지 모르겠네요..

gcc -o t1 t1.c -lncursesw -I/usr/include/ncursesw -L/usr/include/ncursesw

이렇게 컴파일 했는데 여전히 한글이 깨지더군요 왜이런건가요?
terminal >글자코딩도 바꿔봤는데 여전해 깨지고요..
file 로 확인해보니 utf8 이였습니다..

전 페도라4 을 쓰고 있습니다.

#include <ncurses.h>
 
int main()
{
        initscr();
        printw("hello world!!!");
        printw("헬로우~!!!");
        refresh();
        getch();
        endwin();
 
        return 0;
}


감비노도 궁금해하더라구..등짝!..등짝을보자!..


감비노도 궁금해하더라구..등짝!..등짝을보자!..

la9527의 이미지

늦었지만 이제야 댓글을 답니다. ^^;

쉘에서의 로케일과 프로그램의 로케일이 다르기 때문에,
프로그램 안에서도 로케일을 세팅해 줘야 한글이 제대로 나오게 됩니다.

또, 라이브러리의 차이점은

  ncursesw -> utf8, euckr 둘다 지원
  ncurses -> euckr 지원

wchar를 지원해주고 않해주고의 차이입니다.
따라서 ncursesw 는 utf8이 지원이 되고, ncurses는 utf8이 지원이 않되는 것입니다.

따라서 코딩은 다음과 같이 해주면 해결이 될것입니다.
getenv("LANG" )으로 쓰시면 편할것으로 예상됩니다.

ko_KR.utf8 로 하시면 utf8로 나올것이고,
ko_KR.eucKR 로 하시면 euckr로 나올것입니다.

또, LC_ALL, LC_CTYPE 둘 중아무것이나 쓰셔도 한글 출력에는 지장이 없습니다.
하지만 LC_ALL 이 더 좋을 것입니다.

#include <locale.h>
#include <ncurses.h>
 
int main()
{
        setlocale(LC_ALL, "ko_KR.utf8");
        setlocale(LC_CTYPE, "ko_KR.utf8");
 
        initscr();
        printw("hello world!!!");
        printw("헬로우~!!!");
        refresh();
        getch();
        endwin();
 
        return 0;
}

등짝을보자의 이미지

이 답변을 기다렸습니다..(1년동안 기다렸군요....)
아주 깔끔하게 한글이 나오는군요...:)


감비노도 궁금해하더라구..등짝!..등짝을보자!..


감비노도 궁금해하더라구..등짝!..등짝을보자!..

yongrak0의 이미지

한글 utf-8이나 euc-kr 이런거 공부할려니 답답~~

gamdora의 이미지

1년!

잊지 않다니 대단한 기억력이라고 생각합니다. :)

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.