1
0
forked from aniani/vim

patch 8.2.2912: MS-Windows: most users expect using Unicode

Problem:    MS-Windows: most users expect using Unicode.
Solution:   Default 'encoding' to utf-8 on MS-Windows. (Ken Takata,
            closes #3907)
This commit is contained in:
K.Takata 2021-05-30 18:04:19 +02:00 committed by Bram Moolenaar
parent e71c0ebe2c
commit f883d9027c
6 changed files with 19 additions and 5 deletions

View File

@ -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. |setcellwidths()| function to change the behavior.
*'encoding'* *'enc'* *E543* *'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 global
Sets the character encoding used inside Vim. It applies to text in Sets the character encoding used inside Vim. It applies to text in
the buffers, registers, Strings in expressions, text stored in the the buffers, registers, Strings in expressions, text stored in the

View File

@ -4456,7 +4456,7 @@ enc_canonize(char_u *enc)
// Use the default encoding as it's found by set_init_1(). // Use the default encoding as it's found by set_init_1().
r = get_encoding_default(); r = get_encoding_default();
if (r == NULL) if (r == NULL)
r = (char_u *)"latin1"; r = (char_u *)ENC_DFLT;
return vim_strsave(r); return vim_strsave(r);
} }

View File

@ -430,14 +430,21 @@ set_init_1(int clean_arg)
# endif # endif
# 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. // 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(); p = enc_locale();
# endif
if (p != NULL) if (p != NULL)
{ {
char_u *save_enc; char_u *save_enc;
// Try setting 'encoding' and check if the value is valid. // 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; save_enc = p_enc;
p_enc = p; p_enc = p;
if (STRCMP(p_enc, "gb18030") == 0) if (STRCMP(p_enc, "gb18030") == 0)

View File

@ -127,7 +127,11 @@ typedef enum {
#define ENC_UCSBOM "ucs-bom" // check for BOM at start of file #define ENC_UCSBOM "ucs-bom" // check for BOM at start of file
// default value for 'encoding' // 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 // end-of-line style
#define EOL_UNKNOWN -1 // not defined yet #define EOL_UNKNOWN -1 // not defined yet

View File

@ -501,7 +501,7 @@ func Test_write_file_encoding()
CheckMSWindows CheckMSWindows
let save_encoding = &encoding let save_encoding = &encoding
let save_fileencodings = &fileencodings let save_fileencodings = &fileencodings
set encoding& fileencodings& set encoding=latin1 fileencodings&
let text =<< trim END let text =<< trim END
1 utf-8 text: ÐлÑ<EFBFBD> Vim version 6.2. ПоÑ<EFBFBD>леднее изменение: 1970 Jan 01 1 utf-8 text: ÐлÑ<EFBFBD> Vim version 6.2. ПоÑ<EFBFBD>леднее изменение: 1970 Jan 01
2 cp1251 text: Äëÿ Vim version 6.2. Ïîñëåäíåå èçìåíåíèå: 1970 Jan 01 2 cp1251 text: Äëÿ Vim version 6.2. Ïîñëåäíåå èçìåíåíèå: 1970 Jan 01

View File

@ -750,6 +750,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
2912,
/**/ /**/
2911, 2911,
/**/ /**/