Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it possible to automatically set UTF16 file encoding when opening a file of that type?

Tags:

vim

I edit all kinds of files with Vim (as I'm sure most Vim users do). One bug bear I have is what Vim does when I come across a file with an odd encoding. Most editors (these days) make a good stab at detecting file encodings. However, Vim generally doesn't. And you have to type, for example:

:e ++enc=utf-16le 

To re-read the file in UTF-16 (Otherwise you get a mass of @ signs)

I've been searching around and have seen scripts like set_utf8.vim which can detect a specific file encoding. However, is there are more general solution? I'm a bit bored of having to manually work out what the file encoding is and consulting the help every time I open an unusual file.

like image 445
Benj Avatar asked Oct 19 '12 08:10

Benj


People also ask

What is UTF-16 encoding?

UTF-16 is an encoding of Unicode in which each character is composed of either one or two 16-bit elements. Unicode was originally designed as a pure 16-bit encoding, aimed at representing all modern scripts.

Should I use UTF-8 or UTF-16?

If your data is mostly in western languages and you want to reduce the amount of storage needed, go with UTF-8 as for those languages it will take about half the storage of UTF-16.


2 Answers

Adding the encoding name to 'fileencodings' should do the trick:

:set fencs=ucs-bom,utf-16le,utf-8,default,latin1 

Alternatively, there are plugins like AutoFenc and fencview.

like image 130
Ingo Karkat Avatar answered Sep 22 '22 22:09

Ingo Karkat


Add this code to your .vimrc:

if has("multi_byte")   if &termencoding == ""     let &termencoding = &encoding   endif   set encoding=utf-8   setglobal fileencoding=utf-8   "setglobal bomb   set fileencodings=ucs-bom,utf-8,latin1 endif 
like image 43
netawater Avatar answered Sep 19 '22 22:09

netawater