diff options
Diffstat (limited to 'setuptools/unicode_utils.py')
-rw-r--r-- | setuptools/unicode_utils.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/setuptools/unicode_utils.py b/setuptools/unicode_utils.py index 7c63efd2..3b8179a8 100644 --- a/setuptools/unicode_utils.py +++ b/setuptools/unicode_utils.py @@ -1,5 +1,6 @@ import unicodedata import sys +import re from setuptools.extern import six @@ -42,3 +43,15 @@ def try_encode(string, enc): return string.encode(enc) except UnicodeEncodeError: return None + + +CODING_RE = re.compile(br'^[ \t\f]*#.*?coding[:=][ \t]*([-\w.]+)') + + +def detect_encoding(fp): + first_line = fp.readline() + fp.seek(0) + m = CODING_RE.match(first_line) + if m is None: + return None + return m.group(1).decode('ascii') |