터미널 문자 인코딩 문제 BitchX

터미널 문자 인코딩 문제 BitchX

나는 달렸다BitchXyakuake/konsole(OpenSUSE) 및 terminator/tilda(BT 5 R1)를 사용하여 그 중 두 개(Linux OpenSUSE 11.4 및 BackTrack 5 R1)에서 이상한 �(물음표)가 표시되었기 때문입니다.

그러나 RoxTerm이 포함된 PuppyLinux Lucid 528에서는 문자가 원래대로 표시됩니다(그리스 문자 "fi"). 이제 SUSE와 BT 모두에서 $LC_CTYPE의 값을 확인했는데 이는 Puppy Linux(즉, en_US이므로 utf-8 인코딩이 없음)와 동일합니다.

터미널 설정에서 다른 문자 인코딩을 사용하여 SUSE와 BT를 모두 실험했는데 변경 사항을 발견했지만 텍스트가 여전히 가끔 깨져서 물음표 대신 이해할 수 없는 이상한 "u"-s( Puppy에서는 항상 올바르게 표시됩니다.

이 성가신 문제의 원인은 무엇입니까?
무엇이 다를 수 있으며 차이점을 어떻게 확인할 수 있나요?

답변1

여기에는 몇 가지 일이 진행되고 있습니다.

LC_CTYPE=en_US먼저 이것이 "utf-8 없음"을 의미하는지 확인할 수 있습니까 ?

nl_langinfo기능은 다음과 같은 도움이 될 수 있습니다.

$ python
>>> import locale
>>> locale.setlocale(locale.LC_CTYPE, 'en_US')
'en_US'
>>> locale.nl_langinfo(locale.CODESET)
'ISO-8859-1'

둘째, 한 번에 하나의 변수만 변경해 보는 것이 도움이 될 것입니다. 예를 들어 RoxTerm이 PuppyLinux에서 작동한다면 OpenSUSE 및/또는 BackTrack에서도 작동합니까? 그리고 BitchX차이가 있을 경우를 대비해 어떤 버전을 사용하고 있는지 알려주실 수 있나요 ?

마지막으로 IRC는 문자 인코딩 정보를 실제로 제공하지 않으므로 서버와 채널의 모든 사용자는 문자 인코딩에 동의해야 합니다. 요즘 대부분의 사용자가 UTF-8을 사용하는 것 같은데, 설정을 UTF-8로 변경해 보는 것이 어떨까요?


업데이트

BitchX가 UTF-8을 지원하지 않는다고 말씀하셨는데요.

그러면 다른 유저들과 대화하는데 문제가 생길 것 같아요.

하지만 다른 사람들이 모두 그리스어로 말하고 BitchX도 사용한다면 아마도 당신은그리스어 ISO-8859-7 문자 집합.

내 시스템에서 기본적으로 ISO-8859-7을 지원하는 로케일은 그리스어 2개뿐입니다(예: el_GR.iso88597.

실행하여 locale -a옵션의 전체 목록을 확인하고 해당 문자 집합이 포함된 옵션을 선택하세요.

답변2

마름모 안에 있는 물음표는 클라이언트 프로그램이 문자를 받아들이고 이를 표시 엔진에 전달하지만(bitchX가 터미널 프로그램일 뿐이라는 것이 맞나요?) 터미널이 문자를 렌더링하지 못한다는 의미일 수 있습니다. 따라서 터미널 구성 문제일 가능성이 높습니다. 예를 들어 선택한 글꼴에 그리스 문자에 대한 글리프가 포함되어 있지 않습니다. "hexdump -C"와 같은 명령을 실행하여 이 터미널에서 다른 터미널로 복사하여 붙여넣어 테스트할 수 있습니다. 그러면 phi 코드포인트(U+03C6, 즉 utf-8의 hexdump에서 'CF 86')가 표시됩니다. 그렇다면 그리스어를 지원하는 글꼴을 선택해 보세요.

\u03C6, 등이 표시되면 로케일이 손상되어(유니코드 아님) 클라이언트가 문자를 허용하고 이를 처리하는 유니코드를 적용하지만 직접 출력하지 못하고 대체 모드로 전환할 가능성이 있음을 의미합니다. 따라서 SuSE와 BT 설정 모두 비유니코드 코딩에 대한 별칭으로 en_US(예: ISO-8859-1)가 있는 것 같습니다. en_US.UTF-8을 직접 설정하고 효과를 비교해 보세요.

관련 정보