diff --git a/lib/matplotlib/dviread.py b/lib/matplotlib/dviread.py
index f064113adae5..5f6054079016 100644
--- a/lib/matplotlib/dviread.py
+++ b/lib/matplotlib/dviread.py
@@ -1013,20 +1013,26 @@ def find_tex_file(filename, format=None):
     if isinstance(format, bytes):
         format = format.decode('utf-8', errors='replace')
 
+    if os.name == 'nt':
+        # On Windows only, kpathsea can use utf-8 for cmd args and output.
+        # The `command_line_encoding` environment variable is set to force it
+        # to always use utf-8 encoding. See mpl issue #11848 for more info.
+        kwargs = dict(env=dict(os.environ, command_line_encoding='utf-8'))
+    else:
+        kwargs = {}
+
     cmd = ['kpsewhich']
     if format is not None:
         cmd += ['--format=' + format]
     cmd += [filename]
-    try:  # Below: strip final newline.
-        result = cbook._check_and_log_subprocess(cmd, _log)[:-1]
+    try:
+        result = cbook._check_and_log_subprocess(cmd, _log, **kwargs)
     except RuntimeError:
         return ''
     if os.name == 'nt':
-        # On Windows only, kpathsea appears to use utf-8 output(?); see
-        # __win32_fputs in the kpathsea sources and mpl issue #11848.
-        return result.decode('utf-8')
+        return result.decode('utf-8').rstrip('\r\n')
     else:
-        return os.fsdecode(result)
+        return os.fsdecode(result).rstrip('\n')
 
 
 @lru_cache()