명령으로 터미널 인코딩 전환


24

sshutf-8 대신 웨스턴 인코딩을 사용 하는 서버 중 하나입니다 (그리고 변경할 수있는 방법이 없습니다).

이 서버에 연결하기 위해 bash 스크립트 작성을 시작 했으므로 매번 전체 주소를 입력하지 않아도되지만이 스크립트를 개선하여 터미널 창의 인코딩을 올바르게 변경하고 싶습니다.

"터미널"-> "문자 인코딩 설정 ..."-> "서부 (ISO-8859-1)"로 이동하여 마우스를 사용하여 변경을 수행 할 수 있습니다. 현재 터미널 창 / 화면에 대해 동일한 작업을 수행하는 터미널 명령이 있습니까?

명확히하기 위해 :
나는 원격 사이트에서 시스템의 로케일을 전환하는 방법에 관심이 없다 -그 시스템은 다른 사람에 의해 관리되며, 라틴 -1 인코딩에 어떤 것들이 달려 있는지 전혀 모른다. 내가하고 싶은 것은 내 마우스와 메뉴로 할 수있는 것과 같은 방식 으로 내 측면 의이 터미널 창을 위에서 언급 한 문자 인코딩으로 전환하는 것입니다.


좋은 질문! 인코딩 문제는 종종 PITA 입니다 ... 이것은 작동 하지 않는 방법입니다 ... unix.stackexchange.com/questions/8859/…
lumbric

2
OFF 내 답변이 수락되었지만 현상금이 다른 답변으로 어떻게 넘어갈 수 있습니까? :) :(
törzsmókus

1
@ törzsmókus : (새로운?) 바운티 규칙에 대해 읽을 수 있습니다 : blog.stackoverflow.com/2010/06/improvements-to-bounty-system 바운티 소유자가 7 일 바운티 기간 내에 바운티를 보상하지 않으면 이전과 동일한 자동 보상 규칙이 적용됩니다. 현상금이 시작된 후 게시 된 질문에 대한 답변 (최소한 2 개의 공여)은 자동 수락 자격이 있으며 현상금 금액의 절반이 적립됩니다. 해당 기준을 충족하는 답변이 없으면 바운티가 부여되지 않습니다. – 그리고 모든 바운티는 답변을 수락하는 것과 완전히 독립적이며 무관합니다.

답변:


18

luit이 목적을 위해 설계된 것을 찾고 있습니다.

$ luit -encoding ISO-8859-1 ssh remote.host

ssh 명령의 출력을 UTF-8로 변환하므로 터미널의 인코딩을 변경할 필요가 없습니다.


2
맞습니다. 그러나 나는 여기 luit의 맨 페이지에서이 비트를 찾아왔다. "Luit는 보통 터미널 에뮬레이터에 의해 투명하게 호출된다." 따라서 터미널에서 잘못된 인코딩이 발생하여 여기에 도착하는 사람들은 터미널 에뮬레이터를 통해 인코딩을 변경하는 일반적인 방법입니다.
joseph_morris

@joseph_morris는 답변되는 질문의 세 번째 단락을 알려 드리겠습니다. OP 터미널 에뮬레이터의 메뉴 명령을 사용하여 인코딩을 변경하는 방법을 알고 있었지만 ( '정상적인 방법'이라고 함) CLI 대안을 찾고있었습니다.
törzsmókus

1
그렇기 때문에 "이것이 맞습니다."로 시작했습니다. 그러나이 페이지는 이제 "터미널 인코딩"에서 가장 인기있는 것 중 하나이며, 여기에 도착한 사람들이 "터미널 인코딩이 왜 엉망입니까?" -인코딩은 일반적으로 CLI가 아닌 에뮬레이터에서 변경됩니다.
joseph_morris

아, 이제 당신의 요점이 보입니다.
törzsmókus

4

좋아하는 편집기에서 현재 로케일을 먼저 편집하십시오.

sudo gedit /var/lib/locales/supported.d/local 같은 것에

en_GB.UTF-8 UTF-8
en_US.UTF-8 UTF-8
en_GB.ISO-8859-1 ISO-8859-1
en_US.ISO-8859-1 ISO-8859-1

그런 다음 실행 sudo dpkg-reconfigure locales

그런 다음 터미널을 LANG=en_GB.ISO-8859-1

작동하는 희망


4

그놈 터미널은 gconf를 사용하여 설정을 저장합니다. 이것들은 다음과 같이 조작 gconftool할 수 있습니다.

gconftool --set --type=string /apps/gnome-terminal/profiles/Default/encoding ISO-8859-1

나는 이것을 12.04에서 테스트했습니다. 어떤 이유로 메뉴 ( "Terminal"->"Set Character Encoding...")가 실시간으로 업데이트되지 않는 것처럼 보이지만 실제 문자 인코딩은 올바르게 업데이트됩니다.


2
그러나 이것은 ssh 연결 스크립트를 실행하는 터미널뿐만 아니라 모든 터미널 의 기본 인코딩을 변경합니다 .
törzsmókus

3

테스트 방법을 모르지만 Kubuntu의 Konsole을 사용하여 다음을 수행 할 수 있습니다.

1) dbus에 등록 된 응용 프로그램 찾기

$ qdbus

내가 사용 konsole하는 간단한 qdbus | grep kons나에게org.kde.konsole

2) Konsole에서 현재 세션 찾기

$ qdbus org.kde.konsole | grep Sessions
/Sessions
/Sessions/1

$ set | grep -i sessions
KONSOLE_DBUS_SESSION=/Sessions/1

3) 유용한 방법 찾기

$ qdbus org.kde.konsole /Sessions/1 | grep -i codec
method QByteArray org.kde.konsole.Session.codec()
method bool org.kde.konsole.Session.setCodec(QByteArray codec)

4) 현재 인코딩 확인

$ qdbus org.kde.konsole /Sessions/1 org.kde.konsole.Session.codec
UTF-8

5) 인코딩 설정

$ qdbus org.kde.konsole /Sessions/1 org.kde.konsole.Session.setCodec ISO-8859-1
true

6) 현재 인코딩 확인

$ qdbus org.kde.konsole /Sessions/1 org.kde.konsole.Session.codec
ISO-8859-1

우분투에는 비슷한 터미널 프로그램이 있지만 올바른 서비스 이름, 경로, 방법 및 인수로 자신을 혼란스럽게해야합니다.


2

다음은 프로덕션 서버에 연결할 때 프로파일의 배경색을 변경하는 데 사용한 다른 솔루션입니다. 관련이 xdotool있습니다.

xdotool원하는 메뉴 항목을 선택하는 데 필요한 키 입력을 시뮬레이션합니다. 먼저 키보드로 시도한 다음 순서를 적어 두십시오.

$ xdotool key alt+t Down c Down Return

첫 문자 인코딩을 활성화합니다. 다른 Down키를 추가 Return하려면 다른 키를 추가 하십시오.

참고 :의 ssh경우 ~/.ssh/config파일을 사용 하여 서버의 별칭을 구성 할 수도 있습니다 .


죄송합니다-현상금 담당자를
보내려고

gnome-terminal의 메뉴가 변경되지 않는다고 보장하지 않기 때문에 나는 이것이 매우 취약한 해킹이라고 생각합니다 . 실제 해결책이 없을 때 올바른 것일 수 있습니다 . 그러나 하나가 있습니다.
törzsmókus

1

xterm사용하여 인코딩을 변경 제어 시퀀스 . 예를 들어, bash다음을 실행하여 UTF-8 문자 세트를 얻습니다.

echo -n $'\e%G'

다음을 실행하여 ISO 8859-1 코딩에 액세스 할 수 있습니다.

echo -n $'\e%@'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.