次のコードを実行しても、プラス文字がデコードされず "新宿区+歌舞伎町" のままとなります。
// 新宿区+歌舞伎町ですので、次のように、プラス文字を %20 に置換してからデコードするようにします。
var query = '%E6%96%B0%E5%AE%BF%E5%8C%BA+%E6%AD%8C%E8%88%9E%E4%BC%8E%E7%94%BA';
alert(decodeURIComponent(query));
// 新宿区+歌舞伎町ただし、この対応の良し悪しは見解が分かれるところですので、この曖昧?な対応が気になるなら、(結局どうすればよいのかさらに迷ってしまうかもしれませんが)ネットでの解説などを読んでみてください。
var query = '%E6%96%B0%E5%AE%BF%E5%8C%BA+%E6%AD%8C%E8%88%9E%E4%BC%8E%E7%94%BA';
alert(decodeURIComponent(query.replace(/\+/g, '%20')));
少し話題がそれますが、String.replace で、複数マッチして繰り返し置換したいときは、スラッシュ表記の正規表現を使って g (グローバルマッチ) を指定するしかないと思い込んでいましたが、
次のように、第3引数に g (グローバルマッチ) を指定しても Firefox では同じ振る舞いになる とのことです。
// 新宿区+歌舞伎町知らなかったなぁ。(雑学)
var query = '%E6%96%B0%E5%AE%BF%E5%8C%BA+%E6%AD%8C%E8%88%9E%E4%BC%8E%E7%94%BA';
alert(decodeURIComponent(query.replace('+', '%20', 'g')));
1 件のコメント:
decodeURIComponentではなくdecodeURIを使えばいいと思います。
コメントを投稿