patch 7.4.2086
Problem:    Using the system default encoding makes tests unpredictable.
Solution:   Always use utf-8 or latin1 in the new style tests.  Remove setting
            encoding and scriptencoding where it is not needed.
diff --git a/src/testdir/runtest.vim b/src/testdir/runtest.vim
index 559d5f8..e06e0cb 100644
--- a/src/testdir/runtest.vim
+++ b/src/testdir/runtest.vim
@@ -49,6 +49,14 @@
 " This also enables use of line continuation.
 set nocp viminfo+=nviminfo
 
+" Use utf-8 or latin1 be default, instead of whatever the system default
+" happens to be.  Individual tests can overrule this at the top of the file.
+if has('multi_byte')
+  set encoding=utf-8
+else
+  set encoding=latin1
+endif
+
 " Avoid stopping at the "hit enter" prompt
 set nomore
 
diff --git a/src/testdir/test_alot_utf8.vim b/src/testdir/test_alot_utf8.vim
index 8824ee5..049251f 100644
--- a/src/testdir/test_alot_utf8.vim
+++ b/src/testdir/test_alot_utf8.vim
@@ -1,7 +1,8 @@
 " A series of tests that can run in one Vim invocation.
 " This makes testing go faster, since Vim doesn't need to restart.
 
-" These tests use utf8 'encoding'.  Setting 'encoding' is in the individual
+" These tests use utf8 'encoding'.  Setting 'encoding' is already done in
+" runtest.vim.  Checking for the multi_byte feature is in the individual
 " files, so that they can be run by themselves.
 
 source test_expr_utf8.vim
diff --git a/src/testdir/test_channel.vim b/src/testdir/test_channel.vim
index af9060a..e00cc50 100644
--- a/src/testdir/test_channel.vim
+++ b/src/testdir/test_channel.vim
@@ -1,5 +1,4 @@
 " Test for channel functions.
-scriptencoding utf-8
 
 if !has('channel')
   finish
diff --git a/src/testdir/test_digraph.vim b/src/testdir/test_digraph.vim
index 60ae1fd..12cda4d 100644
--- a/src/testdir/test_digraph.vim
+++ b/src/testdir/test_digraph.vim
@@ -4,9 +4,6 @@
   finish
 endif
 
-set enc=utf-8
-scriptencoding utf-8
-
 func! Put_Dig(chars)
   exe "norm! o\<c-k>".a:chars
 endfu
diff --git a/src/testdir/test_expand_dllpath.vim b/src/testdir/test_expand_dllpath.vim
index e69e7e1..d8ab416 100644
--- a/src/testdir/test_expand_dllpath.vim
+++ b/src/testdir/test_expand_dllpath.vim
@@ -1,5 +1,3 @@
-scriptencoding utf-8
-
 func s:test_expand_dllpath(optname)
   let $TEST_EXPAND_DLLPATH = '/dllpath/lib' . substitute(a:optname, '\zedll$', '.', '')
   execute 'let dllpath_save = &' . a:optname
diff --git a/src/testdir/test_expr_utf8.vim b/src/testdir/test_expr_utf8.vim
index e8246ef..1737a9f 100644
--- a/src/testdir/test_expr_utf8.vim
+++ b/src/testdir/test_expr_utf8.vim
@@ -2,8 +2,6 @@
 if !has('multi_byte')
   finish
 endif
-set encoding=utf-8
-scriptencoding utf-8
 
 func Test_strgetchar()
   call assert_equal(char2nr('á'), strgetchar('áxb', 0))
diff --git a/src/testdir/test_json.vim b/src/testdir/test_json.vim
index 589fcb9..e149036 100644
--- a/src/testdir/test_json.vim
+++ b/src/testdir/test_json.vim
@@ -1,12 +1,9 @@
 " Test for JSON functions.
 
-" JSON requires using utf-8.  Conversion breaks the asserts, therefore set
-" 'encoding' to utf-8.
+" JSON requires using utf-8, because conversion breaks the asserts.
 if !has('multi_byte')
   finish
 endif
-set encoding=utf-8
-scriptencoding utf-8
 
 let s:json1 = '"str\"in\\g"'
 let s:var1 = "str\"in\\g"
diff --git a/src/testdir/test_matchadd_conceal_utf8.vim b/src/testdir/test_matchadd_conceal_utf8.vim
index 8293fbe..34d3ee2 100644
--- a/src/testdir/test_matchadd_conceal_utf8.vim
+++ b/src/testdir/test_matchadd_conceal_utf8.vim
@@ -2,8 +2,6 @@
 if !has('conceal') || !has('multi_byte')
   finish
 endif
-set encoding=utf-8
-scriptencoding utf-8
 
 if !has('gui_running') && has('unix')
   set term=ansi
diff --git a/src/testdir/test_regexp_utf8.vim b/src/testdir/test_regexp_utf8.vim
index 6247b30..81d8f5b 100644
--- a/src/testdir/test_regexp_utf8.vim
+++ b/src/testdir/test_regexp_utf8.vim
@@ -2,8 +2,6 @@
 if !has('multi_byte')
   finish
 endif
-set encoding=utf-8
-scriptencoding utf-8
 
 func s:equivalence_test()
   let str = "AÀÁÂÃÄÅĀĂĄǍǞǠẢ BḂḆ CÇĆĈĊČ DĎĐḊḎḐ EÈÉÊËĒĔĖĘĚẺẼ FḞ GĜĞĠĢǤǦǴḠ HĤĦḢḦḨ IÌÍÎÏĨĪĬĮİǏỈ JĴ KĶǨḰḴ LĹĻĽĿŁḺ MḾṀ NÑŃŅŇṄṈ OÒÓÔÕÖØŌŎŐƠǑǪǬỎ PṔṖ Q RŔŖŘṘṞ SŚŜŞŠṠ TŢŤŦṪṮ UÙÚÛÜŨŪŬŮŰŲƯǓỦ VṼ WŴẀẂẄẆ XẊẌ YÝŶŸẎỲỶỸ ZŹŻŽƵẐẔ aàáâãäåāăąǎǟǡả bḃḇ cçćĉċč dďđḋḏḑ eèéêëēĕėęěẻẽ fḟ gĝğġģǥǧǵḡ hĥħḣḧḩẖ iìíîïĩīĭįǐỉ jĵǰ kķǩḱḵ lĺļľŀłḻ mḿṁ nñńņňʼnṅṉ oòóôõöøōŏőơǒǫǭỏ pṕṗ q rŕŗřṙṟ sśŝşšṡ tţťŧṫṯẗ uùúûüũūŭůűųưǔủ vṽ wŵẁẃẅẇẘ xẋẍ yýÿŷẏẙỳỷỹ zźżžƶẑẕ"
diff --git a/src/testdir/test_visual.vim b/src/testdir/test_visual.vim
index 177f571..240546b 100644
--- a/src/testdir/test_visual.vim
+++ b/src/testdir/test_visual.vim
@@ -1,9 +1,7 @@
-" Tests for Visual mode
+" Tests for Visual mode.  Uses double-wide character.
 if !has('multi_byte')
   finish
 endif
-set encoding=utf-8
-scriptencoding utf-8
 
 if !has('visual')
   finish