diff --git a/apps/files_external/lib/webdav.php b/apps/files_external/lib/webdav.php
index 279ae716935994411e889bbadef270ecf362ef97..f5010f92208d76a5b87f288dac3af854dcde3b64 100644
--- a/apps/files_external/lib/webdav.php
+++ b/apps/files_external/lib/webdav.php
@@ -267,7 +267,7 @@ class DAV extends \OC\Files\Storage\Common {
 
 		$curl = curl_init();
 		curl_setopt($curl, CURLOPT_USERPWD, $this->user . ':' . $this->password);
-		curl_setopt($curl, CURLOPT_URL, $this->createBaseUri() . str_replace(' ', '%20', $target));
+		curl_setopt($curl, CURLOPT_URL, $this->createBaseUri() . $this->encodePath($target));
 		curl_setopt($curl, CURLOPT_BINARYTRANSFER, true);
 		curl_setopt($curl, CURLOPT_INFILE, $source); // file pointer
 		curl_setopt($curl, CURLOPT_INFILESIZE, filesize($path));
diff --git a/tests/lib/files/storage/storage.php b/tests/lib/files/storage/storage.php
index 6ec35dfbc926284828a4c1920f0f9cbd1c46daa9..38cd17ac8c94e09138be61600335622eeba10096 100644
--- a/tests/lib/files/storage/storage.php
+++ b/tests/lib/files/storage/storage.php
@@ -310,7 +310,7 @@ abstract class Storage extends \PHPUnit_Framework_TestCase {
 		$this->assertFalse($this->instance->file_exists('folder'));
 	}
 
-	public function hashProvider(){
+	public function hashProvider() {
 		return array(
 			array('Foobar', 'md5'),
 			array('Foobar', 'sha1'),
@@ -326,4 +326,23 @@ abstract class Storage extends \PHPUnit_Framework_TestCase {
 		$this->assertEquals(hash($type, $data), $this->instance->hash($type, 'hash.txt'));
 		$this->assertEquals(hash($type, $data, true), $this->instance->hash($type, 'hash.txt', true));
 	}
+
+	public function testHashInFileName() {
+		$this->instance->file_put_contents('#test.txt', 'data');
+		$this->assertEquals('data', $this->instance->file_get_contents('#test.txt'));
+
+		$this->instance->mkdir('#foo');
+		$this->instance->file_put_contents('#foo/test.txt', 'data');
+		$this->assertEquals('data', $this->instance->file_get_contents('#foo/test.txt'));
+
+		$dh = $this->instance->opendir('#foo');
+		$content = array();
+		while ($file = readdir($dh)) {
+			if ($file != '.' and $file != '..') {
+				$content[] = $file;
+			}
+		}
+
+		$this->assertEquals(array('test.txt'), $content);
+	}
 }