[리눅스/Vim] 파일 인코딩 처리하는 법(필수!!!) / utf-8, euc-kr 변환

2020. 12. 18. 00:20·CS/운영체제
728x90
반응형

여러 프로젝트를 하다보면 인코딩 때문에 애 먹은적이 한두번이 아니다. 

 

특히나 표준 인코딩의 utf-8을 사용하는데 한글이 적용될 때는 euc-kr 등 다른 인코딩이 적용된 프로젝트나 파일등을 볼 수 있다. 

 

이 포스팅에서는 utf-8 환경에서 euc-kr 파일이 열었을 때로 접근할 것이다. 

 

양방향으로 조정할 수는 있지만 처음에는 혼동하는 경우가 있기에 한 방향으로 설명한다.

 

업무 효율적인 면에서도 아주 중요한 포인트가 될 수 있기에 습득하는게 유용한 기술이라 본다.

 

필자는 리눅스 상에서 vim 에디터를 자주 들여다 보기에 vim 위주로 정리하였다.

 

1. vim이나 touch 명령어로 "test"파일을 만들어보자.

vim test

 

2. test의 현재 인코딩 상태를 파악해보자.

아래 코드에서 "charset=binary"라고 보일것이다. 아무것도 안잡혀있어서 그런거니 넘어가도 좋다.

file -bi test
예시) inode/x-empty; charset=binary

 

3. test 파일에 한글 "안녕하세요"를 저장하고 다시 파일 인코딩을 확인하자.

아래 코드에서 "charset=utf-8"라고 보일것이다. 사용자 locale에 따라 저장되는 것이다.

(자세히는 locale 정보를 vim설정에 담아서 사용하는것이다.)

file -bi test
text/plain; charset=utf-8

 

4. 강제로 euc-kr로 인코딩

아래 명령어를 주면 파일 인코딩이 변할것이다.

(주의) iconv와 file의 명령어에서 인코딩 표기가 다른것을 눈치 챘을 것이다. 두 명령어의 인코딩 표기 기준이 다른것 뿐이고, 두 인코딩의 표준은 동일해서 같은 맥락이라고 보면된다. 결론은 같다는 말이다. 

iconv -c -f utf8 -t euc-kr test -o test
file -bi test
text/plain; charset=iso-8859-1

 

5. 깨진 한글을 vim을 통해서 확인

자! 여기서 부터 실제 상황이라고 보면 된다. 프로젝트 파일을 받았는데 내 환경은 "utf-8"이고 파일은 "euc-kr"인 상황이라고 가정해보자. vim 에디터를 통해서 확인해보니 깨진것을 볼 수 있을 것이다.

파일은 "euc-kr"인 상태로 저장되어있고 "utf-8" 인코딩 설정을 가진 vim으로 열어서 확인해보니 한글이 깨져 있는 것이다.

그래서 "utf-8"로 보던 vim에서는 잠깐 euc-kr로 보려고 한다.

아래 vim 명령어를 주목하자. 

¾È³çÇϼ¼¿ä



:e ++enc=euc-kr

위 명령라인모드(command line mode)에서 ":e ++enc=euc-kr"라고 치면 아래와 같이 인코딩이 될것이다. 

다만, 파일은 자체 인코딩 설정은 변하지 않는다.

안녕하세요



:e ++enc=euc-kr

 

6. 파일 인코딩 변환 

vim 에디터에서 깨진 한글을 복구하여 보고있는데 파일을 닫았다가 다시 열면 깨져있는 것을 볼 수 있을 것이다. 이를 방지하기 위해 

아래와 같이 ":set fileencoding=utf-8" 명령어를 주고 vim 파일을 저장하면 된다. 또는 iconv 명령어로 주어도 된다.

안녕하세요



:set fileencoding=utf-8

또는 

iconv -c -f euc-kr -t utf8 test -o test
728x90
반응형
저작자표시 (새창열림)

'CS > 운영체제' 카테고리의 다른 글

[리눅스/명령어] usermod 사용자 변경  (0) 2021.10.10
[리눅스/명령어] 사용자 확인  (0) 2021.10.10
[리눅스] 파일서버-SMB/CIFS/NFS  (1) 2020.10.27
[리눅스] 리눅스에서 나스 원격(NAS remote) 연결하기 / 파일서버 cifs / mount 옵션 / mount 사용법 / cifs 연결  (2) 2020.10.11
[리눅스] 에어팟 낮은 볼륨 높이기  (1) 2020.06.28
'CS/운영체제' 카테고리의 다른 글
  • [리눅스/명령어] usermod 사용자 변경
  • [리눅스/명령어] 사용자 확인
  • [리눅스] 파일서버-SMB/CIFS/NFS
  • [리눅스] 리눅스에서 나스 원격(NAS remote) 연결하기 / 파일서버 cifs / mount 옵션 / mount 사용법 / cifs 연결
크크크크
크크크크
공뷰를 합시다.
    반응형
  • 크크크크
    Tom's Note
    크크크크
  • 전체
    오늘
    어제
    • 분류 전체보기 (122) N
      • IT 지식 (4)
      • CS (63)
        • 알고리즘 & 자료구조 (17)
        • 운영체제 (40)
        • 네트워크 (1)
        • 데이터베이스 (5)
      • 보안 (3) N
      • SW 공학 & 프로그래밍 언어 (46)
        • Java (28)
        • 디자인 패턴 (1)
        • 형상관리 (2)
        • 톰캣(WAS) (2)
        • SW 방법론 (3)
        • 스프링부트 (5)
      • 시스템 설계 (4)
        • Docker (2)
      • 자격증 (2)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      whatis
      /etc/passwd
      자바
      ADsP
      which
      문제해결
      REST API
      2차
      단반향
      whereis
      스프링부트
      Chage
      su
      usermod
      java
      docker
      DI
      cifs
      DTO
      chmod
      비트연산
      리눅스
      man
      1급
      passwd
      불변
      암호설정
      분석기법
      apropos
      알고리즘
    • 최근 댓글

    • 최근 글

    • 250x250
    • hELLO· Designed By정상우.v4.10.3
    크크크크
    [리눅스/Vim] 파일 인코딩 처리하는 법(필수!!!) / utf-8, euc-kr 변환
    상단으로

    티스토리툴바