javascriptのURIエンコードをRubyでデコードする
2007年6月20日
PHPの時に苦労した記憶があるので
勇んで記事を書こうと思ったら、サクっと出来てしまった。
勇んで記事を書こうと思ったら、サクっと出来てしまった。
javascript側はencodeURIComponentでエンコードする。
こんなコードをHTMLに埋め込んで、適当な文字列をURIエンコードした出力をコピペでゲットする
こんなコードをHTMLに埋め込んで、適当な文字列をURIエンコードした出力をコピペでゲットする
<script type="text/javascript"><!-- document.write(encodeURIComponent("おお、kjirouよ! 死んでしまうとはなさけな% &?い!!")); // --></script>
※HTMLのcharsetはUTF-8にすること
Ruby側はURI.unescapeでデコードする
例えばこんな感じで動作確認する
例えばこんな感じで動作確認する
require "uri" $KCODE = "UTF" p URI.unescape('ここに先程のjavascriptでURIエンコードした文字列をコピペ');
※ブラウザやターミナルの文字コードの設定は正しく行うこと
これで無事エンコード+デコードできました。
参考リンク
- URLエンコード
- URIエンコード(URLエンコード)(URIエンコードの仕様がどのRFCに準拠しているかのまとめ)
PHPでも簡単に出来ました。
どうやら、文字コードがUTF-8じゃなかった場合の記憶と、ごっちゃになってたようです。
どうやら、文字コードがUTF-8じゃなかった場合の記憶と、ごっちゃになってたようです。