gpt4 book ai didi

java - 编码 url UTF8 - shell 脚本

转载 作者:行者123 更新时间:2023-11-30 06:33:57 25 4
gpt4 key购买 nike

我正在使用以下函数在 bash 脚本中对 url/titles 进行编码

urlencode() {
# urlencode <string>
old_lc_collate=$LC_COLLATE
LC_COLLATE=C

local length="${#1}"
for (( i = 0; i < length; i++ )); do
local c="${1:i:1}"
case $c in
[a-zA-Z0-9.~_-]) printf "$c" ;;
*) printf '%%%02X' "'$c" ;;
esac
done

LC_COLLATE=$old_lc_collate
}

某些参数的输出如下:

description=%627%644%639%628%627%62F%64A
downloadurl=http%3A%2F%2Fmedia.myhomepage.com%2Fmedia%2FVT-142437WE-WEB-IRQ-MOSUL-PROGRESS-HAWAMDA_2017-03-08_14%3A28%3A12.mp4
title=%623%647%644GKxS7otlAsujiRxXHTvshUE9

还使用以下java代码来编码相同的参数

URLEncoder.encode(video.getHeadline() , UTF_8_ENCODING).replace("+", "%20");
URLEncoder.encode(video.getHeadline() , UTF_8_ENCODING)

并且 out 与 bash 不同

description=%D8%A7%D9%82%D8%AA%D8%AD%D9%85%D8%AA%20%D8%A7%D9%84%D9%82%D9%88%D8%A7%D8%AA%20%D8%A7%D9%84%D8%B9%D8%B1%D8%A7%D9%82%D9%8A%D8%A9%20%D8%AD%D9%8A%20%D8%A7%D9%84%D9%85%D9%86%D8%B5%D9%88%D8%B1%20%D8%BA%D8%B1%D8%A8%20%D8%A7%D9%84%D9%85%D9%88%D8%B5%D9%84%20%D8%B6%D9%85%D9%86%20%D8%AA%D9%82%D8%AF%D9%85%D9%87%D8%A7%20%D9%81%D9%8A%20%D8%A7%D9%84%D8%B3%D8%A7%D8%AD%D9%84%20%D8%A7%D9%84%D8%BA%D8%B1%D8%A8%D9%8A%20%D9%85%D9%86%20%D8%A7%D9%84%D9%85%D8%AF%D9%8A%D9%86%D8%A9%20%D8%AA%D9%85%D9%87%D9%8A%D8%AF%D8%A7%20%D9%84%D8%A7%D8%B3%D8%AA%D8%B9%D8%A7%D8%AF%D8%AA%D9%87%D8%A7%20%D9%85%D9%86%20%D8%AF%D8%A7%D8%B9%D8%B4.%20%D9%85%D9%86%20%D8%AC%D9%87%D8%A9%20%D8%A3%D8%AE%D8%B1%D9%89%20%D8%AE%D9%8A%D9%91%D8%B1%20%D8%B1%D8%A6%D9%8A%D8%B3%20%D8%A7%D9%84%D9%88%D8%B2%D8%B1%D8%A7%D8%A1%20%D8%A7%D9%84%D8%B9%D8%B1%D8%A7%D9%82%D9%8A%20%D8%AD%D9%8A%D8%AF%D8%B1%20%D8%A7%D9%84%D8%B9%D8%A8%D8%A7%D8%AF%D9%8A%20%D9%85%D8%B3%D9%84%D8%AD%D9%8A%20%D8%A7%D9%84%D8%AA%D9%86%D8%B8%D9%8A%D9%85%20%D8%A8%D9%8A%D9%86%20%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D8%B3%D9%84%D8%A7%D9%85%20%D9%88%D8%A7%D9%84%D9%82%D8%AA%D9%84.


downloadurl=http%3A%2F%2FFmedia.myhomepage.com%2Fmedia%2Fvideos%2F2017%2F03%2F08%2FVT-142437WE-WEB-IRQ-MOSUL-PROGRESS-HAWAMDA_2017-03-08_14%3A28%3A12.mp4


title=%D8%A7%D9%84%D8%B9%D8%A8%D8%A7%D8%AF%D9%8A%20%D9%8A%D8%AE%D9%8A%D8%B1%20%D9%85%D8%B3%D9%84%D8%AD%D9%8A%20%D8%AF%D8%A7%D8%B9%D8%B4%20%D8%A8%D9%8A%D9%86%20%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D8%B3%D9%84%D8%A7%D9%85%20%D9%88%D8%A7%D9%84%D9%82%D8%AA%D9%84

请告诉我如何在 bash 中获得相同的 java 输出,就像 bash shell 中 java.net.URLEncoder.encode() 的对应部分

最佳答案

如果您只需要对数据进行 url 编码以便稍后将其传递给 curl (正如您在评论中提到的),我建议让 curl使用 --data-urlencode <data> 为您处理编码选项。

例如:

title="Mačka"
url="http://google.com/?q=mačka"
curl -G example.com/?foo=bar --data-urlencode "title=$title" --data-urlencode "url=$url"

提出如下请求:

GET /?foo=bar&title=Ma%C4%8Dka&url=http%3A%2F%2Fgoogle.com%2F%3Fq%3Dma%C4%8Dka

注意 -G 的使用强制GET方法;如果没有它,--data-* 中的任何一个选项默认为POST body 中的方法和参数。

关于java - 编码 url UTF8 - shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45530633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com