iterms2 를 사용중 한글파일 및 폴더명에 대해 TAB키를 이용한 자동완성이 되지 않는다. 이는 bash의 문제이며 현재 나와있는 4버전으로 업데이트 하면 해결할 수 있다는 반가운 소식에 따라 업데이트를 하기로 했다.

(참조: 설치방법 )


현재 bash의 버전을 확인.


> bash --version


GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin14)

Copyright (C) 2007 Free Software Foundation, Inc.


이곳에서 최신 버전을 다운로드 받을 수 있다.(현재 버전은 bash-4.3)



다운로드가 완료되면 압축을 해제하고 해당 폴더로 이동한다.


> cd ~/Downloads/

> tar xvzf bash-4.3.tar.gz

> cd bash-4.3

> ./configure && make && sudo make install


참고로 && 는 앞의 명령이 성공할시 다음 명령을 실행합니다. 반대로 실패 해야 다음명령을 진행하는 경우 || 를 사용합니다.

성공/실패와 상관없는 경우 ; 를 사용합니다.


  • cmd1 && cmd2
  • cmd1 || cmd2
  • cmd1 ; cmd2 ;


자동으로 설치가 진행이 됩니다. 설치가 모두 완료되고 나면 새로 설치한 shell 을 기본으로 사용하도록 설정 해 주어야 합니다.


> chsh -s /usr/local/bin/bash <사용자계정>


만약 자신의 계정명을 잘 모른다면 whoami 명령어를 사용해 보세요.


Changing shell for 계정명.

chsh: /usr/local/bin/bash: non-standard shell


쉘을 등록하기 위해 다음 명령을 수행합니다. 


> sudo bash -c "echo /usr/local/bin/bash >> /private/etc/shells"


여기까지 마무리 했다면 터미널을 종료하고 다시 연후 bash --version 으로 버전을 확인해 봅니다. 4.3 으로 나온다면 모두 정상적으로 진행이 된 것입니다. 이제 나머지 작업을 해 봅시다. /bin 폴더로 이동하여 기존의 bash 를 bash-old 라는 이름으로 백업한 후 새로 설치한 bash의 심볼릭 링크를 생성합니다.


> cd /bin

> sudo mv bash bash-old

> sudo ln -s /usr/local/bin/bash bash

> ls -al bash*


lrwxr-xr-x  bash@ -> /usr/local/bin/bash

-r-xr-xr-x  bash-old*


모든 작업이 마무리 되었습니다. 터미널을 종료하고 다시 시작하여 한글파일 및 폴더명을 입력하여 테스트 해보면 됩니다.


검색한 내용을 토대로 그대로 따라하며 한번에 성공한지라.. 혹시라도 오타라든가 실수를 했을경우 어떻게 되돌리는지는 잘 모르겠네요.. 그냥 /애도..

Posted by KENSIN
,
인터넷 익스플로러의 언어 설정 옵션이다.



위 화면에서 ko_KR 이 IE9, FF 등에서 기본 설정 되어있는 언어 옵션이다.

IE8은 ko 가 기본값으로 되어있다. (위 화면의 옵션은 IE9 화면이며 ko 는 테스트를 위해 추가한 부분이다, 위아래로 이동하여 우선권 설정이 가능하다.)


URLEncoder.encode("한글", encoding_charset) 로 인코딩 후 GET 주소를 보내면 서버에서 request 에 캐릭터 셋을 euc-kr 로 설정한후 request.getParameter 로 받을 경우ko 는 바로 제대로 된 한글이 보여지고 ko_KR 은 깨진 문자열로 보여진다.

따라서 request.getLocale() 을 이용해 ko 인지 ko_KR인지 판단하여 ko_KR일 경우 파라미터 값을 다시 getByte("ISO-8859-1"), "euc-kr" 로 인코딩 변경하여주면 정상적인 한글 값을 받아 올수 있다.


-- 사이트 페이지 링크

<a href="?name=<%=URLEncoder.encode("홍길동", "euc-kr")%>" >

-- 서버에서의 처리

String name = request.getParameter("name");
// [ko] 로 넘어온 경우 출력해 보면 "홍길동" 으로 찍힌다. 인코딩할 필요 없음.

// [ko_KR] 인 경우 깨져서 보인다. 인코딩이 필요하다.
if("get".equalsIgnoreCase(request.getMethod()) && !"".equals(name)){
    String localeName = String.valueOf(request.getLocale()).trim();
    if("ko_KR".equals(localeName)){
        name = new String(name.getBytes("iso-8859-1"), "euc-kr");
        // [ko_KR] 로 넘어온 경우 인코딩 후 여기서 "홍길동" 으로 찍힌다.
    }
}



Posted by KENSIN
,