diff --git a/CHANGELOG.md b/CHANGELOG.md
index a74676b822ddb0b8f765eeacf1ff157df3af2909..8dc705d296f3b50512570022dbb1d0b35404900d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,13 @@ This project adheres to [Semantic Versioning](http://semver.org/).
 
 The format of this file is based on [Keep a Changelog](http://keepachangelog.com/).
 
+## Unreleased
+
+### Fixed
+
+* Fix compatibility with ruby 3.0 by changing how values are escaped.
+
+
 ## [0.1.0] / 2017-07-21
 
 ### Added
diff --git a/lib/schleuder-cli.rb b/lib/schleuder-cli.rb
index 16821ce921efe1a4c69d57a07819fc7438984803..c6adf093b758992603757425beeb59ee822cb0f1 100644
--- a/lib/schleuder-cli.rb
+++ b/lib/schleuder-cli.rb
@@ -3,6 +3,7 @@ require 'json'
 require 'pathname'
 require 'net/https'
 require 'uri'
+require 'cgi'
 require 'singleton'
 require 'yaml'
 require 'base64'
diff --git a/lib/schleuder-cli/helper.rb b/lib/schleuder-cli/helper.rb
index 925dfde21ba908087daba50a2d45774f2c2567ed..6c3e47881ee3a98d7ddbeeb425fd0289b8dc8a69 100644
--- a/lib/schleuder-cli/helper.rb
+++ b/lib/schleuder-cli/helper.rb
@@ -19,7 +19,7 @@ module SchleuderCli
       u = "/#{args.join('/')}.json"
       if params
         paramstring  = params.map do |k,v|
-          "#{URI.escape(k.to_s)}=#{URI.escape(v.to_s)}"
+          "#{CGI.escape(k.to_s)}=#{CGI.escape(v.to_s)}"
         end.join('&')
         u << "?#{paramstring}"
       end