Change File Encoding to utf-8 via vim in a script

前端 未结 4 1591
旧时难觅i
旧时难觅i 2020-12-12 13:54

i just got knocked down after our server has been updated from Debian 4 to 5. We switched to UTF-8 environment and now we have problems getting the text printed correctly on

4条回答
  •  [愿得一人]
    2020-12-12 14:19

    You may actually want set nobomb (BOM = byte order mark), especially in the [not windows] world.

    e.g., I had a script that didn't work as there was a byte order mark at the start. It isn't usually displayed in editors (even with set list in vi), or on the console, so its difficult to spot.

    The file looked like this

    #!/usr/bin/perl
    ...
    

    But trying to run it, I get

    ./filename
    ./filename: line 1: #!/usr/bin/perl: No such file or directory
    

    Not displayed, but at the start of the file, is the 3 byte BOM. So, as far as linux is concerned, the file doesn't start with #!

    The solution is

    vi filename
    :set nobomb
    :set fileencoding=utf-8
    :wq
    

    This removes the BOM at the start of the file, making it correct utf8.

    NB Windows uses the BOM to identify a text file as being utf8, rather than ANSI. Linux (and the official spec) doesn't.

提交回复
热议问题