🐑

【Rust】日本語を含む文字列をURLエンコードしたい

2022/06/11に公開

概要

例えば日本語をURLにパラメータとして設定する場合など、URLエンコードを行います。URLエンコードの概要についてはURLエンコードとはを参照句ください。
今回はRustでURLエンコードした文字列を取得したい場合、どうすれば良いかというのをメモ書きします。

対応

percent-encodingというクレートを使います。今回の記事で使用したバージョンはは2.1.0です。
percent-encoding2.1.0では、utf8_percent_encodeというメソッドが用意されているので、これを使用します。
なお、引数に指定するNON_ALPHANUMERICについては記号文字もエンコードの対象とするので、除外したい文字があればRustが読めなくても雰囲気で実装するOauth1.0(とTwittere API、時々HTTP1.1)の記事で紹介されているように、エンコード対象外としたい文字列を設定することもできます。

実装サンプル

use percent_encoding::{utf8_percent_encode, NON_ALPHANUMERIC};

async fn get_url_encode(keyword: String) -> String {
    // キーワードをURLエンコード
    let encoded_keyword = utf8_percent_encode(&keyword, NON_ALPHANUMERIC).to_string();
    let url_encoded = format!(
        "http://samle.com?keyword={keyword}",
        keyword = encoded_keyword
    );
    return url_encoded;
}

Discussion