diff --git a/lib/get.js b/lib/get.js
index 2e95330..3d17ee7 100644
--- a/lib/get.js
+++ b/lib/get.js
@@ -5,6 +5,7 @@ var Promise = require('es6-promise').Promise; // jshint ignore:line
var fs = require('then-fs');
var mime = require('mime');
var basename = require('path').basename;
+var { URL } = require('url');
var cache = {};
@@ -71,7 +72,12 @@ module.exports = function get(url, options) {
debug('request %s', url, settings);
cache[url] = new Promise(function (resolve) {
- request(encodeURI(url), settings, function response(error, res, body) {
+ var encodedUrl = new URL(url).toString();
+ if (encodedUrl !== url) {
+ inliner.emit('warning', 'url ' + url + ' was transformed to ' +
+ encodedUrl);
+ }
+ request(encodedUrl, settings, function response(error, res, body) {
if (error) {
debug('request failed: %s', error.message);
inliner.emit('warning', 'failed to request ' + base + ' (' +
diff --git a/test/fixtures/Encoded Space.gif b/test/fixtures/Encoded Space.gif
new file mode 100644
index 0000000..472727f
Binary files /dev/null and b/test/fixtures/Encoded Space.gif differ
diff --git a/test/fixtures/bad-url.result.html b/test/fixtures/bad-url.result.html
index ccbe846..6d3ba24 100644
--- a/test/fixtures/bad-url.result.html
+++ b/test/fixtures/bad-url.result.html
@@ -1 +1 @@
-
+
diff --git a/test/fixtures/image-inline-encoded-space.result.html b/test/fixtures/image-inline-encoded-space.result.html
new file mode 100644
index 0000000..fa85742
--- /dev/null
+++ b/test/fixtures/image-inline-encoded-space.result.html
@@ -0,0 +1 @@
+
+
+