RAILS PRESS RUBY on RAILS, it’s DRY and COOL …

RSS Feed

RAILS PRESS RSS

Tag Cloud

はてなブックマーク - railspress.matake.jp の注目エントリー
象形文字くさび形文字ミイラそろばんの玉そろばんコーラン占いの板?象牙大英博物館
« 前の3件
Tagged by 文字コード

Posted on
2008/03/27

Tags
MeCab, ノウハウ, 文字コード

0 Comment

この記事をはてなブックマークに登録 この記事のはてなブックマーク数 この記事を livedoor クリップに登録この記事の livedoor クリップ数 このエントリを del.icio.us に追加
ブックマークに追加する

RailsアプリからEUC-JPエンコードされた辞書を持つMeCabを使う方法

通常RailsアプリからMeCabを利用するには、MeCab側でUTF-8の辞書を選択すると思います。
しかしHyperEstraierとMeCabを連携させる為には、MeCab辞書がEUC-JPエンコーディングである必要があります。

そこで、RailsアプリからEUC-JP環境のMeCabを使う為に、以下のようなフィルタを定義しました。

LANG : RUBY
  1. require 'nkf'
  2. require 'MeCab'
  3.  
  4. module MeCab
  5.   class Tagger
  6.     def parseToNode_with_eucjp_to_utf8(text)
  7.       text = NKF.nkf("-W -e", text)
  8.       parseToNode_without_eucjp_to_utf8(text)
  9.     end
  10.     alias_method_chain :parseToNode, :eucjp_to_utf8
  11.   end
  12.   class Node
  13.     def surface_with_eucjp_to_utf8
  14.       NKF.nkf("-E -w", surface_without_eucjp_to_utf8)
  15.     end
  16.     alias_method_chain :surface, :eucjp_to_utf8
  17.     def feature_with_eucjp_to_utf8
  18.       NKF.nkf("-E -w", feature_without_eucjp_to_utf8)
  19.     end
  20.     alias_method_chain :feature, :eucjp_to_utf8
  21.   end
  22. end

これで
・MeCabに単語を入力する際には「UTF-8 => EUC-JP」変換
・MeCabから結果が出力された際には「EUC-JP => UTF-8」変換
というフィルタができます。

ps.
これでalias_method_chainの使い方を覚えた。


Posted on
2008/02/23

Tags
JpAddress, Plugin, 文字コード

1 Comment

この記事をはてなブックマークに登録 この記事のはてなブックマーク数 この記事を livedoor クリップに登録この記事の livedoor クリップ数 このエントリを del.icio.us に追加
ブックマークに追加する

日本全国の郵便番号&住所データDBを作る方法

郵便番号データダウンロード - 日本郵便」でオープンソースとして配布されている「郵便番号&住所データ」(CSVファイル:全国版は12万行で12MB)を使えば、誰でも簡単に日本全国の郵便番号&住所DBを作れます。

RailsでDBにデータを入れるなら、ActiveRecord::Extentions使って一気にDBに入れてやればいいだけです。(CSVファイルはSHIFT_JISなので、DBに入れる際にデータをUTF-8に変換するのを忘れずに!)

データをCSVからDBに取り組む為のコードはこんな感じ。

LANG : RUBY
  1. require 'fastercsv'
  2. require 'kconv'
  3. require 'ar-extensions'
  4. $KCODE='j'
  5.  
  6. address_list = Array.new
  7. FasterCSV.foreach("KEN_ALL.CSV") do |data|
  8.   address_list <<[ data[2].toutf8, data[6].toutf8, data[7].toutf8, data[8].toutf8 ]
  9. end
  10.  
  11. column = [:zipcode, :prefecture, :city, :address]
  12. Address.import(column, address_list)

上のコードだと、僕のMacBookの場合、全国版のデータでも大体1分程で登録が完了します。
僕はこれをrakeタスクで簡単に登録できるようにしてます。

» このエントリーには続きがあります。続きを読む »


Posted on
2007/11/16

Tags
MySQL, 文字コード

2 Comments

この記事をはてなブックマークに登録 この記事のはてなブックマーク数 この記事を livedoor クリップに登録この記事の livedoor クリップ数 このエントリを del.icio.us に追加
ブックマークに追加する

MySQLに既に存在するデータベース内部の文字コードを、latin1からutf8に変換する方法。

MySQL/Rubyのバージョンをあげたら、MySQLから取ってきてたデータが全部文字化けしてたので、なんでかなぁ〜と思ったら...

MySQLのデータベース内部のエンコーディングが、latin1になってた(汗
dumpしたSQLを見てる限り、文字コードがUTF-8のDBの中に、文字コードをlatin1に指定したテーブルを作っちゃってたらしい...orz

MySQLとデータベース自体はEncoding=utf8だったので、どうやら昔のプラグインが悪さしてた?
MySQL/Rubyを、Webサーバ上のmysql-configがlatin1(もしくはエンコーディング設定無し)の状態でソースから入れたのが原因かなぁ〜?

まぁサーバ環境設定したのが1年以上前なんで、原因ははっきりとは分からずなのですが、ひとまず文字コードを「MySQL文字コードの移行」という記事を手本に、MySQL内部のlatin1で入ってるデータを、全てUTF-8に行こうしました。

参考サイトとは若干手順が違ったりしたので、以下、手順をメモしておきます。

» このエントリーには続きがあります。続きを読む »


« 前の3件
文字コードタグ