ColdFusionでURL EncodeとURL Decode
はじめに
仕事でColdFusion(以下CF)を書くものの、自己学習でライセンス料を払いたくないためCF互換のLuceeを使って書いているがURLのエンコードとデコードの関数が怪しかったのでメモ。
encodeとdecodeの標準関数
以下が使用できる。ただし、urlEncode()はluceeでのみ実装された関数で、CFでは使えない。
- urlEncode() ※luceeのみ実装
- encodeForUrl()
- urlDecode()
- decodeFromUrl()
使い方
urlEncode()
<cfdump var="#urlEncode('testParam=日本語文字列')#"> <!--- test%3D%E6%97%A5%E6%9C%AC%E8%AA%9E --->
encodeForUrl()
<cfdump var="#encodeForUrl('testParam=日本語文字列')#"> <!--- test%3D%E6%97%A5%E6%9C%AC%E8%AA%9E --->
urlDecode()
<cfset encodedUrl = encodeForUrl("testParam=日本語文字列")> <cfdump var="#urlDecode(encodedUrl)#"> <!--- test=日本語 --->
decodeFromUrl
<cfset encodedUrl = encodeForUrl("testParam=日本語文字列")> <cfdump var="#decodeFromUrl(encodedUrl)#"> <!--- test=æ¥æ¬èª --->
日本語が文字化けする。
まとめ
エンコードに関してはurlEncode()の方がcharsetを指定できる上位互換だが、lucee独自の実装でCFでは使えない。互換性を優先するならurlEncode()は使わずにencodeForUrl()を使う。
デコードに関してはurlDecode()を使う。decodeFromUrl()は何のために実装されているのか、存在意義がわからない。
CFの標準関数の命名規約どうなってn...