diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocScreen.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocScreen.java
index 40ea088..5d7dd4a 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocScreen.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocScreen.java
@@ -28,8 +28,8 @@
   static class Factory implements Screen.EntryPoint {
     @Override
     public void onLoad(Screen screen) {
-      String projectName = URL.decode(screen.getToken(1));
-      String revision = URL.decode(screen.getToken(2));
+      String projectName = URL.decodeQueryString(screen.getToken(1));
+      String revision = URL.decodeQueryString(screen.getToken(2));
       String path = screen.getToken(3);
       screen.show(new XDocScreen(projectName, revision, path));
       screen.setWindowTitle(FileInfo.getFileName(path));
@@ -39,7 +39,7 @@
   static class HeadFactory implements Screen.EntryPoint {
     @Override
     public void onLoad(Screen screen) {
-      String projectName = URL.decode(screen.getToken(1));
+      String projectName = URL.decodeQueryString(screen.getToken(1));
       String path = URL.decode(screen.getToken(2));
       screen.show(new XDocScreen(projectName, "HEAD", path));
       screen.setWindowTitle(FileInfo.getFileName(path));
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocSideBySideDiffScreen.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocSideBySideDiffScreen.java
index 5f1930c..f3a17dc 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocSideBySideDiffScreen.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocSideBySideDiffScreen.java
@@ -26,8 +26,8 @@
   static class Factory implements Screen.EntryPoint {
     @Override
     public void onLoad(Screen screen) {
-      String change = URL.decode(screen.getToken(1));
-      String patchSet = URL.decode(screen.getToken(2));
+      String change = URL.decodeQueryString(screen.getToken(1));
+      String patchSet = URL.decodeQueryString(screen.getToken(2));
       String path = screen.getToken(4);
       screen.show(new XDocSideBySideDiffScreen(change, patchSet, path));
       screen.setWindowTitle(FileInfo.getFileName(path));
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocUnifiedDiffScreen.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocUnifiedDiffScreen.java
index 42df4d0..043ec9f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocUnifiedDiffScreen.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocUnifiedDiffScreen.java
@@ -26,8 +26,8 @@
   static class Factory implements Screen.EntryPoint {
     @Override
     public void onLoad(Screen screen) {
-      String change = URL.decode(screen.getToken(1));
-      String patchSet = URL.decode(screen.getToken(2));
+      String change = URL.decodeQueryString(screen.getToken(1));
+      String patchSet = URL.decodeQueryString(screen.getToken(2));
       String path = screen.getToken(4);
       screen.show(new XDocUnifiedDiffScreen(change, patchSet, path));
       screen.setWindowTitle(FileInfo.getFileName(path));
