Life is Really Short, Have Your Life!!

ござ先輩の主に技術的なメモ

PCと携帯サイトの併用で文字化ける・・・

勘違いかもしれないけど書いておく。

PCサイトと携帯サイトの両方を1つのドメインで作ろうとしています。


こういうイメージ。

しかし、mobyletのフィルターをかますとPC端末でもリクエストをエンコードしてくれるので、フォームから入ってくる全角文字が全て化ける。

mobylet.xmlでthroughで囲ったらmobyletの色んな処理をスルーしてくれるし、レスポンスは確かにラップせずスルーしているっぽいんだけど、リクエストの文字コードに手を出すのは困る・・・。(utf-8で画面にレスポンスを返したけど、リクエストがshift-jisに変換されて化けているみたい)

svnレポジトリmobyletのfilterのソース読むと、

//Carrier
Carrier carrier =
	SingletonUtils.get(CarrierDetector.class).getCarrier(request);
//Dialect
MobyletDialect dialect =
	SingletonUtils.get(DialectSelector.class).getDialect(carrier);
//DummyCharset
String charsetName = dialect.getCharacterEncodingCharsetName();
request.setCharacterEncoding(charsetName);

ダミーってなんだよって思いつつ、request毎にキャリアを判別してそいつら用の設定をゲットして、よしなにやっているらしいことまで把握。つーか、PC端末用に文字コードのデフォルト値を与えられるようにして欲しい。エンコードするフィルターなんだからそれぐらい・・・って思ってしまう。SVNからビルドしてパッチ作るのちょっと辛い。

最悪サブドメイン作ってわけるしかないのかなぁ。意地でも何とかしたい。

追記(2010/07/13)

サブドメインといわず、別warにしてhttp://hoge/mobile」のmobileをコンテキストパスにセットすりゃそれでいいワケなんだけど、サービスクラスを結構共有しているわりに携帯で使う箇所は多くないので、同一warにできればこしたことない。

こっそりとid:mobyletさんをIDコールする。