お薦め ページ


メニュー

ハワイ島 遊覧飛行ツアー

ハワイ島 B&B・ホテル

ハワイ島 不動産情報

ハワイ島 情報・観光ガイド

ブログ(Blog)

その他

関連サイト

: 日付別 アーカイブ :

2007年5月24日

2007年5月24日

「 LibIDN Ruby Bindings 」のテスト

前回のブログで 「LibIDN Ruby Bindings」 をインストールするところまできたので、 それでは実際に このライブラリが動作するのかどうか、 テスト用のRubyスクリプトを書いて確認してみる。

「国際化ドメイン名 IDN(Internationalized Domain Name) 」において 最も基本的な変換をテストしてみる。
require 'idn'
include IDN

idnAscii = Idna.toASCII("日本語ドメイン名example.jp")
puts 'Idna.toASCII: ' + idnAscii

idnUnicode = Idna.toUnicode('xn--example-6q4fyliikhk162btq3b2zd4y2o.jp')
puts 'Idna.toUnicode: ' + idnUnicode

このスクリプトを見てすぐに わかるとおり、 Idna.toASCII というメッソドが UTF-8 のユニコードのドメイン名から ASCII文字列に変換するメソッド。 そして、Idna.toUnicode というメッソドが その逆変換である。

注意点として、このスクリプト内ではユニコード(UTF-8)を使っているので ファイルを保存する際には、以前のブログ 『ruby での「 Invalid char `\357' in expression 」エラーメッセージ』 でレポートしたとおり、UTF-8N を指定して保存しておくこと。

このスクリプトの実際の実行結果は
% ruby -rubygems ./IDNtest.rb
Idna.toASCII: xn--example-6q4fyliikhk162btq3b2zd4y2o.jp
Idna.toUnicode: 日本語ドメイン名example.jp
となる。

昨日のブログの通り、この「 LibIDN Ruby Bindings 」のインストールには RubyGemsを採用している。 しかし、上記スクリプトのソース・コード内に 「 require 'rubygems' 」の1行を入れていないので、 変わりにrubyの実行時に 「-rubygems」オプション をつけて対応した。

それから Punycode(ピュニコード)のエンコードとデコード のテスト・スクリプト。
require 'idn'
include IDN

punyAscii = Punycode.encode("日本語ドメイン名example")
puts 'Punycode.encode: ' + punyAscii

punyUnicode = Punycode.decode("example-6q4fyliikhk162btq3b2zd4y2o")
puts 'Punycode.decode: ' + punyUnicode
これも 見たとおり、Punycode.encode と Punycode.decode を呼ぶだけ。 その実行結果は
Punycode.encode: example-6q4fyliikhk162btq3b2zd4y2o
Punycode.decode: 日本語ドメイン名example
となる。

【参考リンク】

カテゴリー: DNS・URL・URI , Ruby     22:23 | コメント (0) | トラックバック (0)

 
ハワイ島での遊覧飛行ツアーとB&Bのスペシャリスト、スカイメリカ
Copyright © 2003,2009 Skymerica Corp. All rights reserved.