忘備録
Next.jsプロジェクト作成中、/を含む文字列をエンコードした後、decodeURIを使ってデコードしても、/だけデコードされなかった。
解決法
encodeURIComponentとdecodeURIComponentをつかう
encodeURI・decodeURIとの違い
詳しく
動作 | |
---|---|
encodeURI | URI全体をエンコード。ただし、予約語はエンコードされない。 |
encodeURIComponent | URI全体をエンコード。予約語もエンコードする。 |
decodeURI | URI全体をデコード。ただし、予約語はエンコードされない。 |
decodeURIComponent | URI全体をデコード。予約語もエンコードする。 |
例
- encodeURI
console.log(encodeURI("今日は12/6ですか?"))
- encodeURIComponent
console.log(encodeURIComponent("今日は12/6ですか?"))
- decodeURI
console.log(decodeURI(encodeURIComponent("今日は12/6ですか?")))
- decodeURIComponent
console.log(decodeURIComponent(encodeURIComponent("今日は12/6ですか?")))
結果
- encodeURI
%E4%BB%8A%E6%97%A5%E3%81%AF12/6%E3%81%A7%E3%81%99%E3%81%8B?
予約語はエンコードされない
- encodeURIComponent
%E4%BB%8A%E6%97%A5%E3%81%AF12%2F6%E3%81%A7%E3%81%99%E3%81%8B%3F
予約語もエンコードされる
- decodeURI
今日は12%2F6ですか%3F
予約語はデコードされない
- decodeURIComponent
今日は12/6ですか?
予約語もデコードされる