自更新以来:需要从变量中替换 Batch for Curl 中的特殊字符(变音符号)

问题描述 投票:0回答:0

自从我上一个关于为 Curl 替换 URL-Code 中的空格的问题后,一切都很顺利。现在通过更新,其中的特殊字符不再起作用了。我需要用它们的 URL 编码替换它们,比如 'ü' 得到 %C3%BC。通过修改这个,特殊字符被正确检测到,但首先我需要自动修改它们。我的旧代码如下:

set "str1=http://192.168.0.100:1234/operations/get?token=abcde12345&subject=var1 in here&object=var2 in here with ü"
set "str2=%%20"
for /f "delims=" %%a in ('cmd /v:on /c @echo "%%str1: =!str2!%%"') do set "str3=%%~a"
curl "%str3%"

通过此代码,字符串效果很好。现在我的问题是,如何修改变量中的特殊字符?如果我手动输入它们,所有内容都会被上面相同的功能替换:

set "str1=http://192.168.0.100:1234/operations/get?token=abcde12345&subject=var1 in here&object=var2 in here with ü"
set "str2=%%20"
for /f "delims=" %%a in ('cmd /v:on /c @echo "%%str1: =!str2!%%"') do set "str3=%%~a"
set "str4=%%C3%%BC"
for /f "delims=" %%a in ('cmd /v:on /c @echo "%%str3:ü=!str4!%%"') do set "str5=%%~a"
curl "%str5%"

如果这些特殊字符被变量使用,它们不会被替换并且在 url 中仍然可见,这会导致接收服务器出现问题。有没有什么解决方案,比如在这种情况下将 %str3% 设置为我的默认字符串,并在第一次修改空格或其他内容后修改它?谢谢。

使用与修改空格相同的代码; 使用其他一些替换代码但仅适用于“普通”字符,不适用于这些特殊字符

curl special-characters delay diacritics expansion
© www.soinside.com 2019 - 2024. All rights reserved.