diff --git a/api/funkwhale_api/music/views.py b/api/funkwhale_api/music/views.py
index 98274e741293f6ef9b4b9cf9ce5f59e32eb8815f..b104bf38991fc8b742ef05f8727295889456ea7a 100644
--- a/api/funkwhale_api/music/views.py
+++ b/api/funkwhale_api/music/views.py
@@ -230,7 +230,7 @@ def get_file_path(audio_file):
                     'MUSIC_DIRECTORY_PATH to serve in-place imported files'
                 )
             path = '/music' + audio_file.replace(prefix, '', 1)
-        return settings.PROTECT_FILES_PATH + path
+        return (settings.PROTECT_FILES_PATH + path).encode('utf-8')
     if t == 'apache2':
         try:
             path = audio_file.path
@@ -241,7 +241,7 @@ def get_file_path(audio_file):
                     'You need to specify MUSIC_DIRECTORY_SERVE_PATH and '
                     'MUSIC_DIRECTORY_PATH to serve in-place imported files'
                 )
-            path = audio_file.replace(prefix, serve_path, 1)
+            path = audio_file.replace(prefix, serve_path, 1).encode('utf-8')
         return path
 
 
diff --git a/api/tests/music/test_views.py b/api/tests/music/test_views.py
index b22ab7fd504fe1afd54b713cec55d9912e9890d8..e641b45d517068520101651a98fd6f1318a2954d 100644
--- a/api/tests/music/test_views.py
+++ b/api/tests/music/test_views.py
@@ -104,6 +104,24 @@ def test_serve_file_in_place(
     assert response[headers[proxy]] == expected
 
 
+@pytest.mark.parametrize('proxy,serve_path,expected', [
+    ('apache2', '/host/music', '/host/music/hello/worldéà.mp3'),
+    ('apache2', '/app/music', '/app/music/hello/worldéà.mp3'),
+    ('nginx', '/host/music', '/_protected/music/hello/worldéà.mp3'),
+    ('nginx', '/app/music', '/_protected/music/hello/worldéà.mp3'),
+])
+def test_serve_file_in_place_utf8(
+        proxy, serve_path, expected, factories, api_client, settings):
+    settings.PROTECT_AUDIO_FILES = False
+    settings.PROTECT_FILE_PATH = '/_protected/music'
+    settings.REVERSE_PROXY_TYPE = proxy
+    settings.MUSIC_DIRECTORY_PATH = '/app/music'
+    settings.MUSIC_DIRECTORY_SERVE_PATH = serve_path
+    path = views.get_file_path('/app/music/hello/worldéà.mp3')
+
+    assert path == expected.encode('utf-8')
+
+
 @pytest.mark.parametrize('proxy,serve_path,expected', [
     ('apache2', '/host/music', '/host/media/tracks/hello/world.mp3'),
     # apache with container not supported yet
diff --git a/changes/changelog.d/196.bugfix b/changes/changelog.d/196.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..655df7d795308ddb97812d378d7d0be78363bd19
--- /dev/null
+++ b/changes/changelog.d/196.bugfix
@@ -0,0 +1 @@
+In-place imported tracks non-ascii characters don't break reverse-proxy serving (#196)