パーセントでエンコードされたすべてのUTF-8サブストリングを通常のUTF-8テキストに置き換えるにはどうすればよいですか?

パーセントでエンコードされたすべてのUTF-8サブストリングを通常のUTF-8テキストに置き換えるにはどうすればよいですか?

URLに%エンコードされたUTF-8テキストを含むHTMLファイルがあります。

たとえば、「%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B」は、「ресурсы」(ロシア語で「リソース」)を意味します。

アクションは、これらのすべての部分文字列を読み取り可能なUTF-8テキストに置き換えることです。

%作業を簡素化するために、ファイルに他のシンボルの使用がないことを考慮することができます。英数字は大文字でも小文字でもかまいません。

sed私はこれが、または何かを使用してエレガントに行うことができると思いますperlが、awk方法はわかりません。

このWebアプリケーションそこに貼り付けたテキストを使うと効果があるようです。

ベストアンサー1

一部のシステムでbash、zsh、GNU echo、またはkshを実装するには、echo -eすべて%\x

url_encoded_string="%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B"
temp_string=${url_encoded_string//%/\\x}

printf '%s\n' "$temp_string"
# output: \xD1\x80\xD0\xB5\xD1\x81\xD1\x83\xD1\x80\xD1\x81\xD1\x8B

echo -e "$temp_string"
# output: ресурсы

(文字列自体にはバックスラッシュ文字は含まれておらず、コマンドechoでサポートされているオプションの1つではないと仮定します。)

@JoshLeeも指摘したように、「エコー警告」を直接使用することで回避できます。

printf ${url_encoded_string//%/\\x}

最初の命令の直後ではありません。

おすすめ記事