From ed562889eedb998f688425ed9540325632ed1b82 Mon Sep 17 00:00:00 2001 From: iroqueta Date: Wed, 26 Oct 2022 15:14:14 -0300 Subject: [PATCH] Call a URL with accents in the query string was not working using HttpClient in Java Issue: 99366 --- common/src/main/java/com/genexus/CommonUtil.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/common/src/main/java/com/genexus/CommonUtil.java b/common/src/main/java/com/genexus/CommonUtil.java index 2c2649b59..07285c6fa 100644 --- a/common/src/main/java/com/genexus/CommonUtil.java +++ b/common/src/main/java/com/genexus/CommonUtil.java @@ -8,6 +8,7 @@ import java.math.BigDecimal; import java.io.*; +import java.net.URLEncoder; import java.text.*; import java.util.*; @@ -3219,9 +3220,17 @@ public final static String escapeUnsafeChars(String path) char ch = path.charAt(src); if (ch >= 128 || UnsafeChar.get(ch)) { - buf[dst++] = '%'; - buf[dst++] = hex_map[(ch & 0xf0) >>> 4]; - buf[dst++] = hex_map[ch & 0x0f]; + try + { + String encoded = URLEncoder.encode( Character.toString(ch), "UTF-8" ); + for (int i = 0; i < encoded.length(); i++) + buf[dst++] = encoded.charAt(i); + } + catch (UnsupportedEncodingException e) + { + logger.debug("Error while encoding unsafe char in escapeUnsafeChars: ", e); + buf[dst++] = ch; + } } else buf[dst++] = ch;