Browse Source

fix(lib): patch `omz_urlencode` to not encode UTF-8 chars in Termux (#12076)

Fixes #12061
Marc Cornellà 4 months ago
parent
commit
1ae0515a80
1 changed files with 5 additions and 0 deletions
  1. 5 0
      lib/functions.zsh

+ 5 - 0
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"