bash:将URL编码为ISO-8859

时间:2013-11-29 15:12:29

标签: perl bash url encoding character-encoding

我目前正在使用它来编码URL(UTF-8):

ENCODED=$(echo -n "válue to éncôde" | \
perl -pe's/([^-_.~A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg');
echo $ENCODED

如何编码成ISO-8859呢?

1 个答案:

答案 0 :(得分:1)

[iso-8859不是编码;这是一整套编码。我假设你的意思是iso-8859-1。]

因此,您将UTF-8字节传递给Perl,并且您希望将它们转换为iso-8859-1。 Encode是该模块的首选模块。

echo -n "válue to éncôde" | \
   perl -MEncode=from_to -MURI::Escape -pe'
      from_to($_, "UTF-8", "iso-8859-1");
      $_ = uri_escape($_);
   '

还有iconv

echo -n "válue to éncôde" | \
   iconv -f UTF-8 -t iso-8859-1 | \
      perl -MURI::Escape -pe'$_ = uri_escape($_)'