vim으로 파일 인코딩을 어떻게 변경합니까?


235

vim을 사용하여 파일의 줄 끝을 수정하는 데 익숙합니다.

$ file file
file: ASCII text, with CRLF line terminators
$ vim file
:set ff=mac
:wq
$ file file
file: ASCII text, with CR line terminators

유사한 프로세스를 사용하여 파일의 유니 코드 인코딩을 변경할 수 있습니까? 작동하지 않는 다음을 시도하고 있습니다.

$ file file.xml
file.xml: Unicode text, UTF-16, little-endian
$ vim file
:set encoding=utf-8
:wq
$ file file.xml
file.xml: Unicode text, UTF-16, little-endian

I 톱 사람의 말 그가 수 "세트 fileencoding = UTF-8, 다음 업데이트 파일을 작성하고, 작동,"하지만 난 뭔가를 누락하거나 다른 그가 혼란스러워 보인다. 그가 "그런 다음 업데이트"가 무엇을 의미하는지 모르겠습니다.

답변:



163

차이점이 있습니다

인코딩 설정

과

파일 인코딩 설정

첫 번째 경우 터미널에 표시되는 출력 인코딩을 변경합니다. 두 번째 경우에는 작성된 파일의 출력 인코딩을 변경합니다.


1
감사합니다! 아파치는 utf-8을 출력했고, php도 마찬가지였으며, 브라우저는 vim과 함께 말 set encoding했지만 여전히 페이지에는 iso-8859-1과 같은 엉망 진 문자가 표시되었습니다. 사용 set fileencoding은 꽤 'Latin1' 을 보여주었습니다
— Adriano Varoli Piazza

77

vim을 사용하여 완벽하게 가능하지만, 단순히 iconv를 사용하지 않습니까? 인코딩 변환을 수행하기 위해 텍스트 편집기를로드하면 너무 작은 손톱에 너무 큰 망치를 사용하는 것처럼 보입니다.

다만:

iconv -f utf-16 -t utf-8 file.xml > file.utf8.xml

그리고 당신은 끝났습니다.


19
단점은 Windows에서 iconv를 쉽게 사용할 수없는 것입니다.
— Adriano Varoli Piazza

2
@AdrianoVaroliPiazza 아니 vim.

1
휴대용 버전으로도 여러 번의 "그냥 설치"다운로드가 "쉽게 이용 가능"
— 하다고 말하고 싶습니다

2
@ adriano-varoli-piazza 아니요, iconv는 @ coder-tim이 지적한 것처럼 Cygwin 및 MingW가 설치된 Windows에서 사용할 수 있습니다.
— t0r0X 2016 년

1
@mario 아니오, Vim은 Windows에서 매우 쉽게 구할 수 있습니다 : vim.org/download.php#pc
— t0r0X

52

단계와 마찬가지로 파일 인코딩 설정이 작동합니다. 그러나 편집기에서 파일을 UTF8로 간주하는 데 도움이되도록 "세트 폭탄"을 하나 추가하고 싶습니다.

$ vim file
:set bomb
:set fileencoding=utf-8
:wq

8
귀하의 답변에 감사드립니다. UTF 바이트 순서 표시에 대해 더 많이 알게되었습니다. 그러나 참고로 BOM을 설정하는 것은 UTF-8에 16/32와 같은 고정 바이트 길이 형식이 아니기 때문에 불필요하거나 불가피하게 보입니다 . 설명 및 참조는 여기 를 참조 하십시오 . vim에게는 문제가 아니며 도움이되지도 않습니다. 사람들이 다른 곳에서 호환성 문제를 일으킬 수 있다는 것을 알고 있어야한다고 생각했습니다.
— joelhardi 2016 년

2
그것은인가 bomb또는 bom, 그것은 할 수있다 unset? 편집 : 예,를 통해 제거 할 수 있습니다 set nobomb.
— icedwater

6
예, VIm은 우리를 bomb(ab로) 설정했습니다 .
— ruffin

워드 프로세서 당, :set bomb경우에 켜져 :set fenc=utf-8.. 참조:he bomb
— 에반 캐롤을

12
우리의 모든 기본 인코딩은 이제 UTF-8에 속합니다
— roblogic

6

파일을 읽기 전에 명령 행 에서 인코딩 을 변경하는 것이 유용 할 수 있습니다 .

rem On MicroSoft Windows
vim --cmd "set encoding=utf-8" file.ext
# In *nix shell
vim --cmd 'set encoding=utf-8' file.ext

참조 시작 , --cmd.


3
첫 번째 변형은 * nix 쉘에서도 작동합니다. 'single quotes'모든 메타 문자를 이스케이프하는 데만 필요합니다. 일반적으로 원하는 것은 아닙니다.
— jpaugh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.