Issue #8774: tabnanny uses the encoding cookie (#coding:...) to use the correct
encoding
diff --git a/Lib/tabnanny.py b/Lib/tabnanny.py
index 2c6fb0c..7053fd9 100755
--- a/Lib/tabnanny.py
+++ b/Lib/tabnanny.py
@@ -93,8 +93,11 @@
                 check(fullname)
         return
 
+    with open(file, 'rb') as f:
+        encoding, lines = tokenize.detect_encoding(f.readline)
+
     try:
-        f = open(file)
+        f = open(file, encoding=encoding)
     except IOError as msg:
         errprint("%r: I/O Error: %s" % (file, msg))
         return
diff --git a/Misc/NEWS b/Misc/NEWS
index fb9b52c..5ac16df 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -375,7 +375,10 @@
 Library
 -------
 
-- Issue #4870: Add an `options` attribute to SSL contexts, as well as 
+- Issue #8774: tabnanny uses the encoding cookie (#coding:...) to use the
+  correct encoding
+
+- Issue #4870: Add an `options` attribute to SSL contexts, as well as
   several ``OP_*`` constants to the `ssl` module.  This allows to selectively
   disable protocol versions, when used in combination with `PROTOCOL_SSLv23`.