diff --git a/src/main/scala/gitbucket/core/util/StringUtil.scala b/src/main/scala/gitbucket/core/util/StringUtil.scala index 5633598..d288d49 100644 --- a/src/main/scala/gitbucket/core/util/StringUtil.scala +++ b/src/main/scala/gitbucket/core/util/StringUtil.scala @@ -20,7 +20,7 @@ md.digest.map(b => "%02x".format(b)).mkString } - def urlEncode(value: String): String = URLEncoder.encode(value, "UTF-8") + def urlEncode(value: String): String = URLEncoder.encode(value, "UTF-8").replace("+", "%20") def urlDecode(value: String): String = URLDecoder.decode(value, "UTF-8") diff --git a/src/test/scala/gitbucket/core/util/StringUtilSpec.scala b/src/test/scala/gitbucket/core/util/StringUtilSpec.scala index a0632eb..29fb0a7 100644 --- a/src/test/scala/gitbucket/core/util/StringUtilSpec.scala +++ b/src/test/scala/gitbucket/core/util/StringUtilSpec.scala @@ -4,11 +4,21 @@ class StringUtilSpec extends Specification { + "urlEncode" should { + "encode whitespace to %20" in { + val encoded = StringUtil.urlEncode("aa bb") + encoded mustEqual "aa%20bb" + } + } + "urlDecode" should { "decode encoded string to original string" in { val encoded = StringUtil.urlEncode("あいうえお") StringUtil.urlDecode(encoded) mustEqual "あいうえお" } + "decode en%20 to whitespace" in { + StringUtil.urlDecode("aa%20bb") mustEqual "aa bb" + } } "splitWords" should {