encoding cheatsheets
버퍼 인코딩(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 함수는 파일을 다시 읽어 버퍼에 쓴다. 버퍼는 작업 공간. 작업 공간에서 수정한 걸 원본이 되는 파일 내용으로 되돌리는 걸 의미한다.
참고
- ChangingEncodings - www.emacswiki.org
- 22.5 Coding Systems - www.gnu.org
- Working with Unicode - vim.wikia.com
- EndOfLineTips - www.emacswiki.org
- Emacs File Encoding FAQ - ergoemacs.org
C-x C-s C-x C-c