tags:

views:

2182

answers:

3

I'm using :set fileencoding=utf-8 and the file is saved correctly, but the next time I open it, I get garbled characters and :set fileencoding? says the option isn't set.

From the docs I understand that I shouldn't touch the encoding option.

What's the correct way of specifying an encoding for a file in VIM?

+5  A: 

Use

set fileencodings=utf-8

(with an s at the end) which can contain a list of different encodings. Vim will try the encodings listed, from left to right, until one works and it will set fileencoding to that encoding. If none work then fileencoding is set to an empty string which will result in default behavior.

Also it would probably make sense to add that to your vimrc so you aren't constantly doing that.

Niki Yoshiuchi
+5  A: 

You can put that directive into a comment in the file:

# vim: set fileencoding=<encoding name> :
RichieHindle
+3  A: 

You should set fileencodings to the different encodings vim should try when opening a file:

set fileencodings=ucs-bom,utf-8,latin1

From :help fileencodings:

This is a list of character encodings considered when starting to edit an existing file. When a file is read, Vim tries to use the first mentioned character encoding. If an error is detected, the next one in the list is tried. When an encoding is found that works, fileencoding is set to it.

You best put these settings in you .vimrc file so that you don't have to input them manually each time you start vim.

sth