1 minute read

버퍼 인코딩(encoding) 확인

C-h v buffer-file-coding-system

버퍼 인코딩을 확인할 수 있다. 함수는 없고 변수를 확인해야 한다.

mode line으로도 확인할 수 있다. UTF-8을 사용하면 mode line에 U 문자를 표시하는 식이다. UTF-16도 U 문자를 표시한다. 자세히 보려면 마우스 커서를 해당 문자 위로 올리거나 buffer-file-coding-system 변수를 확인해야 한다.

인코딩 변경

M-x set-buffer-file-coding-system

변경하고 파일에 저장하려면 C-x C-s 키를 눌러야 한다. 버퍼는 작업 공간이다. 인코딩을 변경한다고 해서 바로 파일에 반영하지 않는다.

라인 엔딩(line endings) 변경

M-x set-buffer-file-coding-system

인코딩과 같이 설정할 수 있다. utf-8 인코딩만 입력하면 라인 엔딩은 안 바꾼다. dos 라인 엔딩만 적용하면 인코딩은 안 바꾼다. utf-8-dos 인코딩과 라인 엔딩을 같이 입력하면 둘 다 바꾼다.

인코딩과 같이 설정할 수 있게 하면 모든 인코딩에 dos, mac, unix가 추가된다. 중복처럼 느껴져 따로 설정하게 할 텐데. emacs는 같이 엎어버렸다. 처음엔 관련 함수를 찾게 되지만 같이 설정한다는 걸 알게 되면 딱히 불편하지는 않다.

UTF-8 BOM도 사용할 수 있나?

utf-8-with-signature 인코딩을 사용하면 된다.

vi init.el
:set bomb
:set fileencoding=utf-8
:wq

emacs는 너무 양반 같네. vim은 BOM을 폭탄(BOMb) 취급하는데.

다른 인코딩으로 파일을 다시 열고 싶다면?

M-x revert-buffer-with-coding-system

revert-buffer 함수는 파일을 다시 읽어 버퍼에 쓴다. 버퍼는 작업 공간. 작업 공간에서 수정한 걸 원본이 되는 파일 내용으로 되돌리는 걸 의미한다.

참고

C-x C-s C-x C-c