スポンサーリンク

JavaScriptで文字列をエンコードするときは encodeURIComponent() を使おう

JavaScriptには文字列をエンコード(URLエンコード)する関数として、escape()、encodeURI()、encodeURIComponent() の3種類があるんですが、どれを使えば良いのかが悩みどころです。

当然、デコードする関数も上記の関数に対応して unescape()、decodeURI()、decodeURIComponent() の3つが用意されています。まぁ、こっちはエンコードした関数に対応するものを使えばいいので、さほど悩みの種にはならないんですけどね。

というわけで、groundwalker.comさんの「javascript: escape(), encodeURI(), encodeURIComponent() 比較」というエントリーを参考に考えてみました。

結論から言うと、encodeURIComponent() を使うのが良さそうな感じです。理由は以下の通り。

まず、escape() を使わない理由は、UTF-8が %u**** 形式に変換さてしまうから。例えばUTF-8の「あ」は「%u3042」といった具合です。

これの何がマズイかって、escape() でエンコードしたUTF-8の文字列をサーバーに送信した場合、サーバー側のシステムによっては上手くデコードできない場合があるんですよ。

次に encodeURI() を使わない理由ですが、encodeURI() は’?’を変換してくれないんですね。ブラウザ内で全ての処理が完結するなら良いんですが、 encodeURI() でエンコードした文字列をURLのクエリーパラメータに含めてサーバーに送信しようとすると、問題が起きないかなぁ?と不安になってしまいます。

だって ’?’ といえば、URLのアドレス情報とクエリーパラメーターを分ける区切り文字ですから、URL内に ’?’ が複数現れる可能性もあるわけですよ。仕様としては大丈夫なのかもしれませんけど、いちいちチェックするのも面倒なので、無いに越したことはないかなと。

そんなわけで、「encodeURIComponent() を使うのが良さそう」となったのでした。

参照リンク
 ・javascript: escape(), encodeURI(), encodeURIComponent() 比較 (groundwalker.com)

スポンサーリンク
コメント
Verify your Comment
Previewing your Comment

This is only a preview. Your comment has not yet been posted.

Working...
Your comment could not be posted. Error type:
Your comment has been posted. Post another comment

The letters and numbers you entered did not match the image. Please try again.

As a final step before posting your comment, enter the letters and numbers you see in the image below. This prevents automated programs from posting comments.

Having trouble reading this image? View an alternate.

Working...

コメントを投稿
トラックバック

このページのトラックバックURL:
https://www.typepad.com/services/trackback/6a01310f1f31c0970c0133ef9c0253970b

このページへのトラックバック一覧 JavaScriptで文字列をエンコードするときは encodeURIComponent() を使おう:

おすすめの記事と広告

プロフィール


  • 書いてる人:夢界 陸

    名古屋在住のおっさん。
    プログラミングやガジェットの話など、 日々の興味を徒然と綴っています。



    Twitterやってます @mukairiku

    運営サイト
    www.mukairiku.net

ブログ内検索

Licenses

  • Creative Commons License

OTHER

  • このブログのはてなブックマーク数

Blog powered by TypePad

スポンサーリンク