summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Cornellà <marc@mcornella.com>2023-12-06 08:09:45 +0100
committerGitHub <noreply@github.com>2023-12-06 08:09:45 +0100
commit1ae0515a80686d33406c9a2c58c0c9666ca47c77 (patch)
tree23f9879fa4dedb9e0397b3ab1fff8c3a44e8fe3d
parent0a9d82780e20e24b6fafc5b2aaefedb0957986c9 (diff)
downloadzsh-1ae0515a80686d33406c9a2c58c0c9666ca47c77.tar.gz
zsh-1ae0515a80686d33406c9a2c58c0c9666ca47c77.tar.bz2
zsh-1ae0515a80686d33406c9a2c58c0c9666ca47c77.zip
fix(lib): patch `omz_urlencode` to not encode UTF-8 chars in Termux (#12076)
Fixes #12061
-rw-r--r--lib/functions.zsh5
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/functions.zsh b/lib/functions.zsh
index a252d0a33..f5c671f9c 100644
--- a/lib/functions.zsh
+++ b/lib/functions.zsh
@@ -182,6 +182,8 @@ function omz_urlencode() {
fi
# Use LC_CTYPE=C to process text byte-by-byte
+ # Note that this doesn't work in Termux, as it only has UTF-8 locale.
+ # Characters will be processed as UTF-8, which is fine for URLs.
local i byte ord LC_ALL=C
export LC_ALL
local reserved=';/?:@&=+$,'
@@ -206,6 +208,9 @@ function omz_urlencode() {
else
if [[ "$byte" == " " && -n $spaces_as_plus ]]; then
url_str+="+"
+ elif [[ "$PREFIX" = *com.termux* ]]; then
+ # Termux does not have non-UTF8 locales, so just send the UTF-8 character directly
+ url_str+="$byte"
else
ord=$(( [##16] #byte ))
url_str+="%$ord"