diff --git a/.gitignore b/.gitignore
index fc72fdb..c00e966 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,3 +12,5 @@
 /venv*
 coverage-html
 dist
+# SublimeText project/workspace files
+*.sublime-*
diff --git a/pre_commit_hooks/autopep8_wrapper.py b/pre_commit_hooks/autopep8_wrapper.py
index 52aaebe..b2d2d0c 100644
--- a/pre_commit_hooks/autopep8_wrapper.py
+++ b/pre_commit_hooks/autopep8_wrapper.py
@@ -14,12 +14,12 @@
 
     retv = 0
     for filename in args.files:
-        original_contents = io.open(filename).read()
+        original_contents = io.open(filename, encoding='UTF-8').read()
         new_contents = autopep8.fix_code(original_contents, args)
         if original_contents != new_contents:
             print('Fixing {}'.format(filename))
             retv = 1
-            with io.open(filename, 'w') as output_file:
+            with io.open(filename, 'w', encoding='UTF-8') as output_file:
                 output_file.write(new_contents)
 
     return retv
diff --git a/pre_commit_hooks/check_docstring_first.py b/pre_commit_hooks/check_docstring_first.py
index f2f5b72..0896812 100644
--- a/pre_commit_hooks/check_docstring_first.py
+++ b/pre_commit_hooks/check_docstring_first.py
@@ -58,7 +58,7 @@
     retv = 0
 
     for filename in args.filenames:
-        contents = io.open(filename).read()
+        contents = io.open(filename, encoding='UTF-8').read()
         retv |= check_docstring_first(contents, filename=filename)
 
     return retv
diff --git a/pre_commit_hooks/string_fixer.py b/pre_commit_hooks/string_fixer.py
index 3523e8a..f73f09d 100644
--- a/pre_commit_hooks/string_fixer.py
+++ b/pre_commit_hooks/string_fixer.py
@@ -32,7 +32,7 @@
 
 
 def fix_strings(filename):
-    contents = io.open(filename).read()
+    contents = io.open(filename, encoding='UTF-8').read()
     line_offsets = get_line_offsets_by_line_no(contents)
 
     # Basically a mutable string
@@ -52,7 +52,7 @@
 
     new_contents = ''.join(splitcontents)
     if contents != new_contents:
-        with io.open(filename, 'w') as write_handle:
+        with io.open(filename, 'w', encoding='UTF-8') as write_handle:
             write_handle.write(new_contents)
         return 1
     else:
diff --git a/testing/util.py b/testing/util.py
index 837a3cb..c5e4547 100644
--- a/testing/util.py
+++ b/testing/util.py
@@ -14,5 +14,5 @@
 
 def write_file(filename, contents):
     """Hax because coveragepy chokes on nested context managers."""
-    with io.open(filename, 'w', newline='') as file_obj:
+    with io.open(filename, 'w', encoding='UTF-8', newline='') as file_obj:
         file_obj.write(contents)
diff --git a/tests/meta_test.py b/tests/meta_test.py
index 29e06a8..e5d068f 100644
--- a/tests/meta_test.py
+++ b/tests/meta_test.py
@@ -12,9 +12,9 @@
 
 
 def test_legacy_hooks():
-    with io.open('hooks.yaml') as legacy_file:
+    with io.open('hooks.yaml', encoding='UTF-8') as legacy_file:
         legacy = yaml.load(legacy_file.read())
-    with io.open('.pre-commit-hooks.yaml') as hooks_file:
+    with io.open('.pre-commit-hooks.yaml', encoding='UTF-8') as hooks_file:
         hooks = yaml.load(hooks_file.read())
 
     # The same set of hooks should be defined in both files
