Skip to content

Commit

Permalink
patch 8.2.2912: MS-Windows: most users expect using Unicode
Browse files Browse the repository at this point in the history
Problem:    MS-Windows: most users expect using Unicode.
Solution:   Default 'encoding' to utf-8 on MS-Windows. (Ken Takata,
            closes #3907)
  • Loading branch information
k-takata authored and brammool committed May 30, 2021
1 parent e71c0eb commit f883d90
Show file tree
Hide file tree
Showing 6 changed files with 19 additions and 5 deletions.
3 changes: 2 additions & 1 deletion runtime/doc/options.txt
Expand Up @@ -2828,7 +2828,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|setcellwidths()| function to change the behavior.

*'encoding'* *'enc'* *E543*
'encoding' 'enc' string (default: "latin1" or value from $LANG)
'encoding' 'enc' string (default for MS-Windows: "utf-8",
otherwise: value from $LANG or "latin1")
global
Sets the character encoding used inside Vim. It applies to text in
the buffers, registers, Strings in expressions, text stored in the
Expand Down
2 changes: 1 addition & 1 deletion src/mbyte.c
Expand Up @@ -4456,7 +4456,7 @@ enc_canonize(char_u *enc)
// Use the default encoding as it's found by set_init_1().
r = get_encoding_default();
if (r == NULL)
r = (char_u *)"latin1";
r = (char_u *)ENC_DFLT;
return vim_strsave(r);
}

Expand Down
9 changes: 8 additions & 1 deletion src/option.c
Expand Up @@ -430,14 +430,21 @@ set_init_1(int clean_arg)
# endif
# endif

# ifdef MSWIN
// MS-Windows has builtin support for conversion to and from Unicode, using
// "utf-8" for 'encoding' should work best for most users.
p = vim_strsave((char_u *)ENC_DFLT);
# else
// enc_locale() will try to find the encoding of the current locale.
// This works best for properly configured systems, old and new.
p = enc_locale();
# endif
if (p != NULL)
{
char_u *save_enc;

// Try setting 'encoding' and check if the value is valid.
// If not, go back to the default "latin1".
// If not, go back to the default encoding.
save_enc = p_enc;
p_enc = p;
if (STRCMP(p_enc, "gb18030") == 0)
Expand Down
6 changes: 5 additions & 1 deletion src/option.h
Expand Up @@ -127,7 +127,11 @@ typedef enum {
#define ENC_UCSBOM "ucs-bom" // check for BOM at start of file

// default value for 'encoding'
#define ENC_DFLT "latin1"
#ifdef MSWIN
# define ENC_DFLT "utf-8"
#else
# define ENC_DFLT "latin1"
#endif

// end-of-line style
#define EOL_UNKNOWN -1 // not defined yet
Expand Down
2 changes: 1 addition & 1 deletion src/testdir/test_writefile.vim
Expand Up @@ -501,7 +501,7 @@ func Test_write_file_encoding()
CheckMSWindows
let save_encoding = &encoding
let save_fileencodings = &fileencodings
set encoding& fileencodings&
set encoding=latin1 fileencodings&
let text =<< trim END
1 utf-8 text: Для Vim version 6.2. Последнее изменение: 1970 Jan 01
2 cp1251 text: Äëÿ Vim version 6.2. Ïîñëåäíåå èçìåíåíèå: 1970 Jan 01
Expand Down
2 changes: 2 additions & 0 deletions src/version.c
Expand Up @@ -750,6 +750,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
2912,
/**/
2911,
/**/
Expand Down

0 comments on commit f883d90

Please sign in to comment.