터미널 : 특수 문자 표시


11

htop선 및 프레임과 같은 일부 프로그램에서는 올바르게 표시되지 않습니다. 대신 -및 로 표시됩니다 /.

여기에 이미지 설명을 입력하십시오

그러나 다른 컴퓨터에서는 올바른 줄로 올바르게 표시됩니다.

여기에 이미지 설명을 입력하십시오

이것이 터미널 문제인지 또는 일부 패키지가 필요한지 확실하지 않습니다.

관련이있는 경우 : 내 시스템은 Debian Wheezy이고 통역사는 bash터미널 에뮬레이터입니다.gnome-terminal


터미널에서 사용하는 글꼴을 변경해 보셨습니까?
goldilocks

2
상자 나 물음표와 같은 자리 표시 자 문자가 유니 코드 문자 대신에 가능한 해결책 일 수 있지만 그의 예는 htopASCII 문자 표시 를 보여줍니다 . 그러나 기본 터미널 글꼴이 유니 코드가 아닌 경우 인코딩도 가능하므로 내 답변에 추가했습니다.
raehik

답변:


11

가장 좋은 예는 비 유니 코드 로캘 (예 : ASCII)로 실행 중입니다. $ LANG 환경 변수를 확인하십시오 (try export | grep LANG). .UTF-8접미사를 찾지 못할 것 입니다. 그것을 추가하십시오 :

export LANG=$LANG.UTF-8

다른 예제는 UTF-8 로케일로 실행 중이며 최근 쉘의 기본값이어야합니다. htop로케일을 감지하고 ASCII 또는 유니 코드 문자를 표시하는 것처럼 보입니다 . 아래 그림에서는 멋진 유니 코드 문자를 얻는 반면 ASCII를 사용하면 임시 문자를 얻을 수 있습니다. 맨 위 그림의 컴퓨터 로캘을 유니 코드로 변경하는 것이 좋습니다 ( Locale-Debian Wiki 참조 ).

그래도 작동하지 않으면 터미널 에뮬레이터 가 문제 일 수 있습니다. 기본 인코딩은 비 유니 코드 일 수 있습니다. 터미널 에뮬레이터의 기본 인코딩을 UTF-8로 변경하십시오 ( xfce4-terminal고급 탭에서 찾았습니다). 지원하지 않으면 현재 글꼴이 유니 코드를 지원하지 않는 것일 수 있습니다. 글꼴을 유니 코드 글꼴로 변경해보십시오.

[이상하게도, 일단 쉘 세션에서 로케일을 ASCII로 한 번 변경 htop하면 ASCII 문자를 다시 변경 한 후에도 항상 ASCII 문자를 표시합니다. 어떤 이유로 쉘에서 로케일을 가끔 변경하는 경우 문제가 될 수 있습니다.]


3

이상한 점은 htopncurses 를 사용 한다는 것인데, 유니 코드를 사용하거나 사용하지 않고 선을 그릴 수 있습니다. 그러나 소스 코드를 CRT.c보면 설명이 표시됩니다.

#ifdef HAVE_LIBNCURSESW
   if(strcmp(nl_langinfo(CODESET), "UTF-8") == 0)
      CRT_utf8 = true;
   else
      CRT_utf8 = false;
#endif

   CRT_treeStr =
#ifdef HAVE_LIBNCURSESW
      CRT_utf8 ? CRT_treeStrUtf8 :
#endif
      CRT_treeStrAscii;

그리고 그 CRT_treeStrUtf8가치는

const char *CRT_treeStrUtf8[TREE_STR_COUNT] = {
   "\xe2\x94\x80", // TREE_STR_HORZ ─
   "\xe2\x94\x82", // TREE_STR_VERT │
   "\xe2\x94\x9c", // TREE_STR_RTEE ├
   "\xe2\x94\x94", // TREE_STR_BEND └
   "\xe2\x94\x8c", // TREE_STR_TEND ┌
   "+",            // TREE_STR_OPEN +
   "\xe2\x94\x80", // TREE_STR_SHUT ─
};

그러나 ncurses (모든 curses 구현)에는 인코딩이 UTF-8인지 여부에 의존하지 않는 이식 가능한 기호가 있습니다. (예 : 일부 응용 프로그램 대화 상자--ascii-lines옵션)을 제공하는 옵션 ASCII 라인 드로잉을 사용하지만, 심지어 라인 드로잉 라이브러리의 효과적인 사용을하지 않는 ncurses를 제공을 사용하지 않는 응용 프로그램을.

간단히 말해서, 이와 같은 동작을하는 프로그램을 발견하면 개발자에게 버그로보고해야합니다.

더 읽을 거리 :


내 문제를 직접 해결하지는 못했지만 ( 예상 유니 코드 선 그리기 문자를 설정 LANG/ LC_ALL활성화 htop) 매우 흥미 롭습니다. 시간을내어 설명해 주셔서 감사합니다!
wrksprfct
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.