diff --git a/Changes b/Changes
index b0fbbe4..e9e4518 100644
--- a/Changes
+++ b/Changes
@@ -4,8 +4,10 @@
 - Add required access to resources.
 - Determine corpus access dynamically using koralQuery for resources without 
   predefined required_access. 
-- Added useful VC (https://korap.ids-mannheim.de/doc/corpus) to resources.json.
+- Added useful VC (https://korap.ids-mannheim.de/doc/corpus) to resources.json. 
+  (#800)
 - Omit empty resource description.  
+- Added URL-encoding for corpus query at in the resource service. 
 
 # version 0.77
 
diff --git a/src/main/java/de/ids_mannheim/korap/dto/converter/ResourceConverter.java b/src/main/java/de/ids_mannheim/korap/dto/converter/ResourceConverter.java
index b91faa8..f128cd3 100644
--- a/src/main/java/de/ids_mannheim/korap/dto/converter/ResourceConverter.java
+++ b/src/main/java/de/ids_mannheim/korap/dto/converter/ResourceConverter.java
@@ -1,5 +1,7 @@
 package de.ids_mannheim.korap.dto.converter;
 
+import java.net.URLEncoder;
+import java.nio.charset.Charset;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -58,8 +60,11 @@
                 layers.put(annotationPair.getId(), code);
             }
             dto.setLayers(layers);
+            
+			String encodedCQ = URLEncoder.encode(r.getCorpusQuery(),
+					Charset.forName("utf-8"));
             dto.setLandingPage("https://korap.ids-mannheim.de?cq=" +
-            		r.getCorpusQuery());
+            		encodedCQ);
             dto.setInstitution(r.getInstitution());
             dto.setRequiredAccess(r.getRequiredAccess());
 
diff --git a/src/main/java/de/ids_mannheim/korap/server/KustvaktBaseServer.java b/src/main/java/de/ids_mannheim/korap/server/KustvaktBaseServer.java
index 269adb6..5cbd362 100644
--- a/src/main/java/de/ids_mannheim/korap/server/KustvaktBaseServer.java
+++ b/src/main/java/de/ids_mannheim/korap/server/KustvaktBaseServer.java
@@ -170,7 +170,7 @@
 
         server.setConnectors(new Connector[] { connector });
         try {
-            log.info("Starting server on port" + kargs.port);
+            log.info("Starting server on port: " + kargs.port);
             server.start();
             server.join();
         }
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/ResourceControllerTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/ResourceControllerTest.java
index 71df3f1..0dc1209 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/ResourceControllerTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/ResourceControllerTest.java
@@ -1,15 +1,17 @@
 package de.ids_mannheim.korap.web.controller;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import org.junit.jupiter.api.Test;
 import org.springframework.test.context.ContextConfiguration;
+
 import com.fasterxml.jackson.databind.JsonNode;
-import jakarta.ws.rs.core.Response;
 
 import de.ids_mannheim.korap.config.SpringJerseyTest;
 import de.ids_mannheim.korap.exceptions.KustvaktException;
 import de.ids_mannheim.korap.utils.JsonUtils;
+import jakarta.ws.rs.core.Response;
 
 @ContextConfiguration("classpath:test-resource-config.xml")
 public class ResourceControllerTest extends SpringJerseyTest {
@@ -32,9 +34,11 @@
 		assertEquals(1, n0.at("/languages").size());
 		assertEquals(6, n0.at("/layers").size());
 		assertEquals("IDS Mannheim", n0.at("/institution").asText());
-		assertEquals("https://korap.ids-mannheim.de?cq=corpusSigle=WPD17",
+		assertEquals("https://korap.ids-mannheim.de?cq=corpusSigle%3DWPD17",
 				n0.at("/landingPage").asText());
 		assertEquals("FREE", n0.at("/requiredAccess").asText());
+		assertEquals("A collection of articles of German Wikipedia from July "
+				+ "1st, 2017.", n0.at("/description").asText());
 		
 		JsonNode n1 = n.get(1);
 		assertEquals("http://hdl.handle.net/10932/00-03B6-558F-5EA0-6301-B",
@@ -46,7 +50,7 @@
 		assertEquals(1, n1.at("/languages").size());
 		assertEquals(6, n1.at("/layers").size());
 		assertEquals("IDS Mannheim", n1.at("/institution").asText());
-		assertEquals("https://korap.ids-mannheim.de?cq=corpusSigle=WDD17",
+		assertEquals("https://korap.ids-mannheim.de?cq=corpusSigle%3DWDD17",
 				n1.at("/landingPage").asText());
 		assertEquals("FREE", n1.at("/requiredAccess").asText());
 	
@@ -60,9 +64,9 @@
 		assertEquals(1, n4.at("/languages").size());
 		assertEquals(6, n4.at("/layers").size());
 		assertEquals("IDS Mannheim", n4.at("/institution").asText());
-		assertEquals("https://korap.ids-mannheim.de?cq=textType = /(.*[Rr]oman|"
-				+ "[Bb]iographie|[Dd]rama|[Ss]schauspiel)/",
+		assertEquals("https://korap.ids-mannheim.de?cq=textType+%3D+%2F%28.*%5BRr%5Doman%7C%5BBb%5Diographie%7C%5BDd%5Drama%7C%5BSs%5Dschauspiel%29%2F",
 				n4.at("/landingPage").asText());
 		assertEquals("FREE", n4.at("/requiredAccess").asText());
+		assertTrue(n4.at("/description").isMissingNode());
 	}
 }
