最も簡単な方法は、%80 (%00-%7F) 未満のすべての URL エンコード シーケンスを何らかのプレースホルダーに置き換え、URL デコードを実行し、元の URL エンコード シーケンスをプレースホルダーに戻すことです。
もう 1 つの方法は、UTF-8 シーケンスを探すことです。あなたの URL は UTF-8 でエンコードされているようで、ウィキペディアは UTF-8 を使用しています。UTF-8 文字のエンコード方法については、 Wikipedia の UTF-8 のエントリを参照してください。
そのため、URL でエンコードされた場合、有効な非 ASCII UTF-8 文字は次のいずれかのパターンに従います。
- (%C0-%DF)(%80-%BF)
- (%E0-%EF)(%80-%BF)(%80-%BF)
- (%F0-%F7)(%80-%BF)(%80-%BF)(%80-%BF)
- (%F8-%FB)(%80-%BF)(%80-%BF)(%80-%BF)(%80-%BF)
- (%FC-%FD)(%80-%BF)(%80-%BF)(%80-%BF)(%80-%BF)(%80-%BF)
したがって、URL でこれらのパターンを照合し、各文字の引用符を個別に外すことができます。
ただし、すべての URL が UTF-8 でエンコードされているわけではないことに注意してください。
一部の古い Web サイトでは、タイ語用の Windows-874 など、他の文字セットをまだ使用しています。
このような場合、その特定の Web サイトの「ฉัน」は、「%E0%B8%89%E0%B8%B1%E0%B8%99」ではなく「%A9%D1%B9」としてエンコードされます。を使用してデコードするとurllib.unquote
、「ฉัน」ではなく「?ѹ」のような文字化けしたテキストが表示され、リンクが壊れる可能性があります。
そのため、URL のデコードによってリンクが壊れていないか注意して確認する必要があります。デコードする URL が UTF-8 であることを確認してください。