浏览代码

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

Fixes #12061
Marc Cornellà 5 月之前
父节点
当前提交
1ae0515a80
共有 1 个文件被更改,包括 5 次插入0 次删除
  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"