diff --git a/odoo/tools/misc.py b/odoo/tools/misc.py
index 7e796831f2917b23dc188e77787b34993c459230..49f8024c5edda1c98edfa8254557114c3ebd7b37 100644
--- a/odoo/tools/misc.py
+++ b/odoo/tools/misc.py
@@ -215,7 +215,10 @@ def _fileopen(path, mode, basedir, pathinfo, basename=None):
     # Give higher priority to module directories, which is
     # a more common case than zipped modules.
     if os.path.isfile(name):
-        fo = open(name, mode)
+        if 'b' in mode:
+            fo = open(name, mode)
+        else:
+            fo = io.open(name, mode, encoding='utf-8')
         if pathinfo:
             return fo, name
         return fo