diff --git a/Lib/subprocess.py b/Lib/subprocess.py
index d34c57828b..df6e8a8063 100644
--- a/Lib/subprocess.py
+++ b/Lib/subprocess.py
@@ -791,6 +791,9 @@ class Popen(object):
errread = msvcrt.open_osfhandle(errread.Detach(), 0)
self.text_mode = encoding or errors or text or universal_newlines
+ if self.text_mode and not self.encoding:
+ import locale
+ self.encoding = locale.getpreferredencoding(False)
# How long to resume waiting on a child after the first ^C.
# There is no right value for this. The purpose is to be polite