カフェ関連サイトのシステム開発日記トップ > フレームワーク > モバイルサイトのフォームを送信する際にsymfonyでエスケープする時の文字化け

モバイルサイトのフォームを送信する際にsymfonyでエスケープする時の文字化け

前回の続きになるのですが、
そうだ、フォームを作るのであればエスケープをしなければ、ということに気づきました。(遅いorz)

モバイルサイトをsymfonyを使って作っていたので、
symfonyでのエスケープ方法を調べました。

 
すると出てきたのが、settings.ymlでのエスケープ方法。

all:
.settings:
escaping_strategy: both
escaping_method: ESC_ENTITIES

 
これをするとすべて文字化けしました(苦笑)

原因を調べてみると、キャリアごとに文字コードを分けていて、
それを最終的に出力してる部分が悪さをしているようでした。
※キャリアごとの文字コードは「Ezweb(au)でモバイルサイトのフォームを送信する際に文字化けする件」参照

その出力部分は以下のような形です。(抜粋)

if ( $objAgent->isVodafone() ) {
echo($content);exit;
}elseif ( $objAgent->isDoCoMo() || $objAgent->isEZweb() ) {
//docomo au はSJIS
$content = mb_convert_encoding( $content, “SJIS-win”, “utf-8″ );
$response->setContent( $content );
}else{
echo($content);exit;
}

$contentは

$response = $this->getContext()->getResponse();
$content = $response->getContent();

でhtmlソース全体をとってきていて、
それを強引にすべてS-JISに変換しています。

ちなみにUTF-8の時は

echo($content);exit;

としないとなぜか文字化けorz
とりあえず時間がなくてこういう形をとっています。

 
結局、フォームの受け取り部分に直接htmlspecialcharsをはめ込みました。

一応これでエスケープはある程度できました。

 
全体的につくりが悪いです(汗

ブックマークに追加:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Twitter
  • Technorati
  • Google Bookmarks
  • FriendFeed
  • Buzzurl
  • LinkedIn

この記事を読んだ人は次の記事も読んでいます

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://cafe-system.com/system282.html/trackback

カフェ関連サイトのシステム開発日記トップ > フレームワーク > モバイルサイトのフォームを送信する際にsymfonyでエスケープする時の文字化け

Tag Cloud
Archives
    2010年3月
    « 2月    
    1234567
    891011121314
    15161718192021
    22232425262728
    293031  
あわせて読みたいブログパーツ
Feeds
Get Adobe Flash playerPlugin by wpburn.com wordpress themes

Return to page top