2012年1月16日月曜日

Google App Engineでshift-jisを扱う

Google App Engineを使ってガラケーに対応したサイトを作ったときにしょうがなしに shift-jisに対応させるために試行錯誤しました。 

ただ、ちょっと前に作ったサイトの中から記憶をたよりにコードを抜き出すので他のサイトの 情報とあわせて、参考程度にしてください(言い訳)
 このサイトでは内部で別のこれまたshift-jisのサイトにつなぐ関係上、結局 内部encodingをshift-jisにしました。
これで、form関係の化けは一応ない、です。ただ、取得したformのデータをそのまま横流ししたりしているので、文字列の中をごにょごにょするときは何かしないといけないかもしれません。

やったこと。


その1.内部エンコーディング,ファイルエンコーディングをshift-jisにする。

    WEB-INFフォルダにある、appengine-web.xmlに、下記の"この行を追加"という
    行を追加。
    Shift-JISってとこは、Shift"_"JISだと、ダメです。
 

 hogehoge
 1
 
 
 
                 
                  
  

その2.サーブレットの中で、requestのエンコーディングとresponseのエンコーディングをShift_JISにする。
    ここは、Shift_JISで、Shift"-"JISでは"ない"です。
public synchronized void doGet(HttpServletRequest req, HttpServletResponse resp)
 throws IOException {
    
 req.setCharacterEncoding("Shift_JIS");
        resp.setCharacterEncoding("Shift_JIS");
}

その3.なぜか、ローカルテストではうまくいかないのでdeployして確かめる。
    これは、なぜか不明。だれか教えて。