ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Java質問&情報提供サイトコミュのサーブレットとTomcat上の文字コード周りについて(tomcat上で携帯電話向けサイトを構築してみたいと思い立ってます・・・)

  • mixiチェック
  • このエントリーをはてなブックマークに追加
はじめまして。
日ごろ、Scala経由でJavaのAPIを便利に使わせてもらっている者です。
サーブレットとTomcat上の文字コード周りについて質問です。

Scalaなかなか便利なので、携帯電話向けのサイト構築でも試しにScalaを、
と思ったところで、はたと、携帯電話向けだとShift_JIS対応しなければ、、、
と気がつき、困り始めてます。

というのは、私がつかっているScalaのweb fw(Lift)はUTF-8のみ対応、
外人さんが作っているもので、日本語などのことはぜんぜん考慮されていません。
・・・すなわち、HTMLぽいテンプレートはUTF-8が前提
調べてみたところ、
JSPをUTF-8にしている一方で、tomcatとブラウザの間はShift_JISでやりとり、
という設定はできるようでした。

[質問1] この場合、Strutsのサーブレット(・・・でいいんですよね??)が、UTF-8からShift_JISへの
文字コード変換を行っているという理解で良いでしょうか?

[質問2] 望ましい解として、どのようなものが考えられるでしょうか?
 内部的な文字コード変換が不可避ならば、
 InputStreamReaderで入力文字コードを指定し、
 OutputStreamWriterで別の出力文字コードを指定して・・・とやるような感じがしてますが、
 はたして、どのタイミングでこうした処理をすべきか(できれば、サーブレットの外でやれた
 方が、サーブレットそのものに手を加えるよりも手間は少ないと思っているのですが、
 もともとUTF-8以外考慮していなフレームワークでそれはできるのかな・・・)。

 Javaで携帯電話向けサイトを構築するための商用製品(例、x-servlet)もありますが、
 まだ、試作・学習段階なので、まずはなるべく自前でやってみたいと思ってます。

やや長文の質問となってしまい申しわけありませんが、どなたかお教えいただけますと幸いです。

コメント(1)

セルフレスです。
朝、起きてみて、深夜に調べていたものを見直しました。

基礎的な記述をしてくれているサイト
http://www.javaroad.jp/servletjsp/sj_servlet2.htm
を見て、
サーブレット単体では、
(細かな問題はさておき、)非常に明確な文字コード指定をしているな、と思いました。

[引用]
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
//(1)エンコード方式の指定
res.setContentType("text/html; charset=Windows-31J");
//(2)パラメータのエンコード方式の指定
req.setCharacterEncoding("Windows-31J");

・・・・・・・・・・・・
私の場合の問題は、
class LiftServlet extends HttpServlet
とサーブレットを拡張しているLiftServletの場合はどうなのかということです。
 ※実験してみてうまくいったらご報告します。
  (JavaでなくてScalaですみませんが・・・)

引き続き、Javaサーブレットで携帯を扱っている方のお話(例、絵文字。。)、伺えましたら幸いです。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Java質問&情報提供サイト 更新情報

Java質問&情報提供サイトのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。