Home > ruby Archive
ruby Archive
Ruby 1.9で文字コードの自動判別を行う
- 2012-01-06 (Fri)
- ruby
たまにRubyの話題でも。
Ruby 1.9で文字コードの自動判別をさせようとおもったら、意外に良いライブラリが見つからなくて苦労しました。
結局ICUをbindingした、charlock_holmesがちゃんと使えたので、メモです。
OSXで使う場合は、下記の様にしてICUライブラリをインストールします。Linuxでは適当なパッケージシステムを使ってインストールしてください。
curl -O http://download.icu-project.org/files/icu4c/4.8.1.1/icu4c-4_8_1_1-src.tgz tar xvzf icu4c-4_8_1_1-src.tgz cd icu/source ./runConfigureICU MacOSX --with-library-bits=64 --disable-samples --enable-static make sudo make install
charlock_holmes自体はgemで提供されています。
gem install charlock_holmes
文字列をUTF-8に変換する場合は、iconvと組み合わせて下記の様に書きます。
encode = CharlockHolmes::EncodingDetector.detect(str)[:encoding]
str.encode("UTF-8", encode)
【変更 2012/1/6 19:37】
コメントを頂いたので、iconvからString#encodeに切り換えました。
【変更 2012/1/6 18:52】
ICUのバージョンを4.8.1.1に上げました。
- Comments: 3
- Trackbacks: 0
Geohashのアルゴリズム
- 2010-01-15 (Fri)
- ruby
Photo by Ludovico Cera
前回、最後にGeohashのエンコード・デコード方法を解説、とか書いたのですが、私が書く前にyuroyoroさんがブログで解説していました。しっかり解説されているので、ぜひ、そちらをご覧ください。
Geohashのミソは、座標を2進数にして、それを交互に並べる所にあります。そしてそれをBASE32でエンコードすることで、座標を文字列にして表現しています。
BASE32は、5ビットで1文字なので、Geohashの長さが奇数の場合は、経度の方がビットが短くなります。 (例: 5文字の場合 全25ビット 緯度が13ビット、経度が12ビット)
そのため、グリッドの大きさが、Geohashが奇数の場合は縦長、偶数の場合は横長になります。
- Comments: 0
- Trackbacks: 1
緯度経度を文字列で表すGeoHash
- 2010-01-13 (Wed)
- Javascript | ruby
なんか世間的に位置情報アプリが流行ってるらしいし、Google App Engine(GAE)も楽しそう。どうせだから、GAEでなんか位置情報アプリでも作ってみよう!と思ってTwitterに書き込んだところ、Geohashという、位置情報のプロトコル?を教えてもらいました。
これは、その名の通り、位置情報をハッシュで表す規格なのですが、いろいろおもしろい特徴があり、調べているうちに楽しくなってきたので、勢い余ってPure Rubyのライブラリまで書いちゃいました。
そのあと、結局ライブラリを作ったところで満足して、アプリは何も作らなかったので、せめてGeohashの解説でも書いておこうと思います。
- Comments: 5
- Trackbacks: 5
Home > ruby Archive
- Search
- Feeds
- Meta