diff --git a/novaclient/v2/fping.py b/novaclient/v2/fping.py
index 5e8b74bb9..c6ed2487e 100644
--- a/novaclient/v2/fping.py
+++ b/novaclient/v2/fping.py
@@ -16,6 +16,7 @@
 """
 Fping interface.
 """
+from six.moves import urllib
 
 from novaclient import base
 
@@ -44,14 +45,14 @@ class FpingManager(base.ManagerWithFind):
         """
         params = []
         if all_tenants:
-            params.append("all_tenants=1")
+            params.append(("all_tenants", 1))
         if include:
-            params.append("include=%s" % ",".join(include))
+            params.append(("include", ",".join(include)))
         elif exclude:
-            params.append("exclude=%s" % ",".join(exclude))
+            params.append(("exclude", ",".join(exclude)))
         uri = "/os-fping"
         if params:
-            uri = "%s?%s" % (uri, "&".join(params))
+            uri = "%s?%s" % (uri, urllib.parse.urlencode(params))
         return self._list(uri, "servers")
 
     def get(self, server):
diff --git a/novaclient/v2/services.py b/novaclient/v2/services.py
index fcf800938..4358be1c3 100644
--- a/novaclient/v2/services.py
+++ b/novaclient/v2/services.py
@@ -16,6 +16,8 @@
 """
 service interface
 """
+from six.moves import urllib
+
 from novaclient import api_versions
 from novaclient import base
 
@@ -42,11 +44,11 @@ class ServiceManager(base.ManagerWithFind):
         url = "/os-services"
         filters = []
         if host:
-            filters.append("host=%s" % host)
+            filters.append(("host", host))
         if binary:
-            filters.append("binary=%s" % binary)
+            filters.append(("binary", binary))
         if filters:
-            url = "%s?%s" % (url, "&".join(filters))
+            url = "%s?%s" % (url, urllib.parse.urlencode(filters))
         return self._list(url, "services")
 
     @api_versions.wraps("2.0", "2.10")