Active Scaffold + Active Mailer + 絵文字

ActiveScaffoldを入れたRails上で、Auからの絵文字入りメールを処理し、絵文字のコードを画像に変換する。

ActiveScaffoldでは、list_column_helper.rbで定義されているclean_column_valueメソッドで、htmlタグのエスケープを各カラムに対して行うので、ここで一緒に絵文字コードをimgタグに変換するスクリプトを追加すればよい。

AUメールはJISで送られてくる。

1b2442=>漢字コード開始
1b2842=>ASCIIコード開始

AUの絵文字は漢字コードよりもさらに上を使用しているので、漢字コードには引っかからず、1b2442(\$Bうんちゃらかんちゃら)などと表示される。これを抜き出してAU文字コードかどうかを判別すればよい

メールを処理するモデルMailer.rbでメールの本文をjisからUTF-8に変換しているが、絵文字の部分は変換されないために、生のJISコードが記録される。絵文字の中に通常の漢字が混じっていてもきちんと変換されない。

というわけで、メール処理時に絵文字部分を処理する必要がある。

メールの文章をscanメソッドで絵文字のコードにマッチする部分を全部探し出して、それを逐一変換していく。

1.アルファベット 絵文字 漢字

この場合は、\(B絵文字 を \(B絵文字コード\$Bと変換する

2.漢字 絵文字 アルファベット

絵文字 => \(B絵文字コード
\(Bアルファベット=>アルファベット

3.漢字 絵文字 漢字

絵文字 =>\(B絵文字コード 
漢字 =>\$B漢字コードと変換する

もしくは、

2バイトコードか1バイトコードかの条件と漢字か漢字でないかの条件で

if byte_code == TRUE

に変換する