UTF-8/EUC-KR, GNOME와 터미널에서 동시에 사용하려면 어떻게 해야 하나요?
안녕하세요?
잠시 설명을 드리자면 이렇습니다.
1.. 조건
- GNOME, GNOME-TERMINAL에서 한글을 모두 사용.
- GNOME는 UTF-8이 기본 인코딩임.(이걸 어떻게 바꾸는지 전혀 모르겠습니다.)
- Shell상에서는 EUC-KR을 사용함.
2. 상황
- 한글 파일명의 문자세트가 EUC-KR인 경우 터미널 상에서는 정상적으로 표시됨.
- GNOME에서는 EUC-KR로 인코딩된 파일 이름이 깨짐.
- 역시 한글 파일명이 UTF-8로 인코딩 된 경우 터미널에선 전부 깨져서 나옴.
- GNOME에선 UTF-8로 인코딩된 파일의 파일 이름이 정상적으로 표시됨.
3. 문제.
리눅스와 윈도우즈를 멀티 부팅 하도록 구성 해 두고 NTFS와 FAT32파티션을 fstab에 자동으로 마운트 하도록 설정 해 두었는데, 마운트 후 한글 파일명이 전부 깨지는 현상을 발견하고(그놈에서만 개어짐. 터미널에서는 깨어지지 않음.) fstab에 해당 항목에 utf8옵션을 주어 인코딩이 자동 변환 되도록 처리 했습니다만, 이렇게 할 경우 터미널(쉘)상에서는 한글 파일명이 다 깨어집니다. 쉘상에서는 EUC-KR 인코딩을 사용 하도록 하였기 때문에 당연한 현상인데, UTF-8만 쓰고 싶어도 Telnet등으로 다른 시스템에 접속 할 경우 인코딩이 EUC-KR이기 때문에 쉘 설정을 변경 할 수도 없습니다. 다라서 파일 시스템 마운트시 EUC-KR로 마운트 하여 그놈과 터미널에서 동시에 정상적으로 파일명을 확인하고 사용 할 수 잇어야 하는데 어떻게 해야 할 지 모르겠습니다.
4. 기타
아래는 한글 환경 구성을 위해 지정한 환경 변수들입니다.
LANG="ko_KR.EUC-KR" LANGUAGE="ko_KR.EUC-KR:ko_KR.UTF-8:en_US" SUPPORTED="ko_KR.EUC-KR:ko_KR.UTF-8:en_US"
말씀 드린 바와 같이 터미널은 EUC-KR(쉘!), 그놈은 UTF-89을 사용하고 이 환경은 어떻게 변경 할 수가 없습니다. 이 상황에서 터미널과 그놈에서 동시에 한글 파일명을 특별한 처리(예를 들자면 디렉터리에 돌입 하기 전에 한글 파일명 또는 디렉터리명의 인코딩을 일시적으로 utf8로 변환 해 준다던가 하는...)없이 사용 할 수 잇어야 하는데 이것이 상당히 어렵습니다. 그놈 컨트롤 센터의 여러가지 기능들을 살펴보고 파일 탐색기의 환경 설정도 찾아 보았지만, 관련된 내용이 없어서 결국 포기했습니다.
아시는 분들이 계시다면 도움을 요청합니다.
EUC-KR을 버릴 수 있는 환경이라면 정말 좋을 텐데 어렵습니다.
screen을 쓰세요.
외부에서 접속했을 때는 screen을 띄워서 쓰면 됩니다. 내부 인코딩과 외부 인코딩을 정할 수 있기 때문에 UTF-8로 처리하면서 출력은 EUC-KR로 할 수 있습니다.
오...
전임자가 세팅한 서버중에 euckr로 되어 있는게 있었는데 일일이 hanterm 띄워서 했었는데;;; 쿨럭;;;
좋은 팁 감사합니다. ;-)
----
The future is here. It's just not widely distributed yet.
- William Gibson
사용하고 계시는
사용하고 계시는 gnome-terminal 메뉴를 찾아보시면 인코딩을 쉽게 바꿀 수 있습니다.
보통때 utf-8 로 쓰시다 euc-kr 인 곳에 접속할 땐 euckr 로 바꾸면 되겠네요.
그 그게...
터미널에 그게 있었나요? 전 그놈 파일 관리자 설정 바꿀려고 난리를 쳤는데 터미널 설정을 바꾸고 일시적으로 잠깐씩 인코딩 변경 해 주는 방법이 잇었군요 으으.. 역시 멍청합니다. 그리고 screen도 그게 된다고요??? manpage한번 봐야 겠군요. 감사합니다. 제가 생각 못 한 것들을 많이들 알려 주셨네요.
----
Lee Yeosong(이여송 사도요한)
E-Mail: yeosong@gmail.com
MSN: ysnglee2000@hotmail.com
----
웃음... 행복... 평화... (진정한...) 희망... 사랑... 이 세상 모든것이 그렇다면 얼마나 좋을까...(꿈 속의 바램일 뿐인가...)
사람천사
근대...
그럼 전반적인 환경을 utf8로 설정 해 주고 파일 시스템 마운트도 그렇게 한 다음에 쓰게 되면 fat32파일 시스템에 파일을 새로 만들 때에문제가 생기지 않는지 모르겠네요. 안 생기나요??? 직접 해 보고 싶은데 문제는 그러다가 잘못되면 골탕 먹을 꺼 같아서요. 미리 여쭤 봅니다. 이런 짓을 해 본 적이 없어서요. 무조건 EUC-KR로 쓰다 보니 흐휴 흠.
----
Lee Yeosong(이여송 사도요한)
E-Mail: yeosong@gmail.com
MSN: ysnglee2000@hotmail.com
----
웃음... 행복... 평화... (진정한...) 희망... 사랑... 이 세상 모든것이 그렇다면 얼마나 좋을까...(꿈 속의 바램일 뿐인가...)
사람천사
vfat 에서 "long filename"
vfat 에서 "long filename" 은 무조건 unicode 로 인코딩됩니다.
를 담당하는 것이 커널 nls 의 역할이고, xxx 를 지정하는 것이 마운트옵션의 iocharset 입니다.
MS windows 의 경우
로 고정되어 있습니다. 어째든 disk 의 인코딩은 unicode 입니다.
다만... 골치아픈게 "short filename" 인데... 인코딩규약이 없습니다. 주는대로 저장하지요.
에서 yyy 를 정해주는게 마운트옵션의 codepage 라고 알고있는데 맞는지 모르겠습니다.
그게...
꼭 그게 그런 거 같지가 않습니다. 리눅스/유닉스는 그런 거 같은데 FAT32자체가 그런 거 같지는 않습니다. 즉 저 FAT32 파일 시스템에 저장된 자료들은 리눅스엣 만든 녀석들이 아닙니다.
근대.. 결론은 그거군요. 8+3의 규칙을 벗어나는 긴파일 이름의 경우 파일을 저장하면 무조건 유니코드라는 말씀이시군요. 그럼 윈도우즈에선 인식이 안 되 버리겠군요. 젠장할 노릇입니다 흐휴. 근대 경험상 그게 또 그런 것도 아닌 거 같고 도데체 알 수가 없습니다. mount의 manpage도 보고 했는데... utf8옵션을 주면 euc-kr이나 기타 문자셋을 utf8로 변환 해서 보여 주는 거 같은데 쉬운 내용은 아니네요.
----
Lee Yeosong(이여송 사도요한)
E-Mail: yeosong@gmail.com
MSN: ysnglee2000@hotmail.com
----
웃음... 행복... 평화... (진정한...) 희망... 사랑... 이 세상 모든것이 그렇다면 얼마나 좋을까...(꿈 속의 바램일 뿐인가...)
사람천사
vfat의 long filename
vfat의 long filename 엔트리에 저장된 것은 무조건 unicode 입니다.
"무조건" 입니다. 원래의 인코딩이 뭐였건 간에 무조건 unicode 로 변환해서 디스크에 저장하는 것이 vfat 의 long filename 입니다.
위에 제 글을 다시 읽어보세요.
이해를 돕기 위해 비슷한 예를 들자면,
소스관리에 애용되는 svn 의 경우 서버 측에 저장되는 commit log 는 무조건 utf-8 입니다.
svn 클라이언트가 자신의 동작환경을 감지해서 commit log 내용을 무조건 utf-8 로 변환해서 서버에 전송합니다.
반대로, commit log 를 확인하고자 할 때는 서버에서 commit log 받아서 클라이언트 자신의 동작환경에 맞게 인코딩을 바꾼 후에 유저에게 전달합니다.
euckr 터미널에서 로그를 작성하건 utf8 터미널에서에 로그를 작성하건 서버에는 무조건 utf-8 로 저장되므로, 다른 곳에서 로그를 받아보고자 할때는 utf-8 문서를 자신의 환경에 맞게 변환만 해주면 됩니다.
이에 비해 cvs 는 commit log 에 대한 규약이 없습니다. 주는대로 저장합니다.
euckr 터미널에서 commit log 를 작성해서 전송했다면 서버에 저장되는 것도 euckr 입니다. utf8 터미널에서 작성해서 전송했다면 서버에 저장되는 것도 utf8 입니다. 로그 관리가 거의 불가능해 질 정도로 개판이 됩니다.
vfat 의 long filename 과 short filename 의 인코딩 차이점은 위의 두 예와 같습니다.
그놈 로케일 변경은
그놈 로케일 변경은 gdm 로그인 화면에서 선택하는 메뉴가 있습니다. 안보인다면 gdm 테마를 기본 테마나 다른것으로 바꿔 보세요. startx로 시작하는 경우는 그냥 현재 로케일로 되지 않을까 합니다. 이건 잘 모르겠네요.
그냥 utf-8로 쓰시면서 인코딩을 보존해야 하는 파일들은 중간에서 자동변환을 해주는 에디터(vim같은)를 사용하시고 윈도우즈 파일 시스템 마운트는 말씀하신대로 utf8옵션으로 처리합니다.
주기적으로 euc-kr 환경이 어쩔수 없이 필요한 경우는 쉘 설정을 하나 따로 만들어 저장해 두셨다가 사용하시면 됩니다. 그놈 터미널이나 konsole에는 모두 이런 기능이 있습니다. 터미널 인코딩 변경, 터미널 설정 저장.
vfat 파일 시스템을 다루거나 euc-kr 인코딩의 문서들을 다루기 위해서 전체 로케일을 바꿔야 할 필요는 없습니다.
여송님한테 지금 필요한 것은 그놈 터미널 프로필을 새로 하나 만들어서 euc-kr, UHC등으로 터미널 인코딩을 지정하시고 필요하실때마다 이것을 실행하셔서 사용하시면 다 해결될 것 같습니다. 다른 해결방법은 이미 알고 계신것 같네요.
--
마잇
--
마잇
리눅스에서 마운트한
리눅스에서 마운트한 vfat 파일 시스템에 한글로 파일 이름을 만들어도 별 문제는 없었던 기억이 납니다. 자주 하는 작업은 아니라 믿을만하진 않습니다.
--
마잇
--
마잇
흐흠.
터미널 프로필! 그거 까지 하긴 귀찮아서 글자 인코딩을 필요할 때만 바꿔서 쓰고 있습니다. 대부분 문서를 euckr로 작성 해야 하는 환경이라 파일을 저장 할 때는 euckr로 인코딩을 지정해서 저장 하거나 기본 환경이 utf-8일 경우 iconv로 변환을 시키고 있습니다. 좀 전 부터 그런 식으로 작업을 시작 햇습니다.
그리고 파일명은 utf8옵션을 줘서 마운트 하고 쉘 설정을 utf-8로 해서 쉘과 그놈에서 모두 정상적으로 보고 있습니다. Telnet나 SSH로 접속 해야 할 때만 문자 인코딩을 EUC-KR로 바꾸고 들어가고 작업이 끝나면 다시 돌려 놓고 있고요. 위에도 적은 듯.
근대 bushi님 말씀에서 아무리 생각 해도 이애 안 가는 것이 잇습니다. 말씀 하신 내용은 이해를 합니다. 알아서 변환해서 유니코드로 저장한다. 근대 제가 이해 안 가는건 그게 아닙니다.
FAT16/32의 경우 긴 파일명을 지원합니다. 다만 이것을 도스에서 볼 경우 짧은 파일명에 CP949로 표현이 되는데 긴 파일명을 적을 경우 유니코드 인코딩을 도스 커널이 알아서 CP949로 바꿔 주는 거라면 말씀 하신게 전부 설명이 됩니다만, 도스가 유니코드 지원한다는 소리는 못 들어 본 거 같습니다. 그게 아니라면 긴 파일명을 저장 하면서 파일 이름 엔트리에 Long Filename 필드와 Short Filename필드가 잇어서 두 곳에 나누어 변환해서 저장 하는 것인지요. 그리고 NT계열은 UI에서 cp949로 파일 시스템에 넣을 때는 유니코드로 변환 해서 넣는다고 하셨는데, 98은 유니코드 지원이 상당히 미비한 것으로 알고 잇습니다. 물론 95도 그렇겠쬬. 솔직히 유니코드 써 본 적도 없는 거 같고요. 그런데도 그런 처리가 되는 건가요? 신기하군요. 전 그게 이해가 안 가고 있었습니다 흠...
----
Lee Yeosong(이여송 사도요한)
E-Mail: yeosong@gmail.com
MSN: ysnglee2000@hotmail.com
----
웃음... 행복... 평화... (진정한...) 희망... 사랑... 이 세상 모든것이 그렇다면 얼마나 좋을까...(꿈 속의 바램일 뿐인가...)
사람천사
댓글 달기