diff --git a/client.py b/client.py
index eb79567750706455f1c200151129fefe8e5cd27a..3b18d959fbd0017e1285effafdb4f45a668944e0 100755
--- a/client.py
+++ b/client.py
@@ -961,6 +961,7 @@ if __name__ == "__main__":
                         liste
             """)
     parser.add_argument('fname', nargs='?', default=None,
+        type=lambda x: x.decode('utf-8'),
         help="Nom du fichier à afficher")
     
     # On parse les options fournies en commandline
diff --git a/server.py b/server.py
index 66723b108cd395fbb320c3ee255417d47e3cabb1..8e075f537d16c9b6fecdf56b815d195cbf45f8bf 100755
--- a/server.py
+++ b/server.py
@@ -41,6 +41,8 @@ def validate(roles, mode='r'):
 
 def getpath(filename, backup=False):
     """Récupère le chemin du fichier ``filename``"""
+    assert(isinstance(filename, unicode))
+    filename = filename.encode('utf-8')
     return os.path.join(serverconfig.STORE, '%s.%s' % (filename, 'bak' if backup else 'json'))
 
 def writefile(filename, contents):
@@ -140,7 +142,8 @@ def listfiles():
     files = {}
     for filename in filenames:
         file_dict = json.loads(open(filename).read())
-        files[filename[:-5]] = file_dict["roles"]
+        fname = filename[:-5].decode('utf-8')
+        files[fname] = file_dict["roles"]
     return files
 
 @server_command('getfile')