旧それなりブログの跡地、画像やスタイルやJSなどが壊れてることがあります。

javascriptのURIエンコードをRubyでデコードする

2007年6月20日

PHPの時に苦労した記憶があるので
勇んで記事を書こうと思ったら、サクっと出来てしまった。
javascript側はencodeURIComponentでエンコードする。
こんなコードを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エンコードした文字列をコピペ');

※ブラウザやターミナルの文字コードの設定は正しく行うこと

これで無事エンコード+デコードできました。

参考リンク

PHPでも簡単に出来ました。
どうやら、文字コードがUTF-8じゃなかった場合の記憶と、ごっちゃになってたようです。