JSPからServlet変換時に文字化け

はてなブックマークに追加   del.icio.usに追加   livedoorクリップに追加   Technoratiに追加   2008年02月01日 10:10:39 (Fri)

もう2月です。
1月はあっという間に終わりました・・・。

そんなこんなで今は、もともとWindows+Oracleで動いていたJSPのシステムをLinux+MySQLに移行してたりするわけなんだけど、まともに動かない。

OracleとMySQLの差を埋めることはしたんだけど、その他に、WindowsとLinuxで扱いが違うという点でちょっと苦戦中。
具体的には、Windowsで動いていたシステムではダブルクォーテーションは「\」でエスケープされていたのね。

で、自分は実際にWindowsで稼働している状態を見たことが分からないけど、一応、そのソースで問題なく動いていたらしい。

ところがLinux上ではそのエスケープが逆に問題になっている。

例えば

String strText = null;
strText = "<a href=\"http://www.kgworks.net/blog/\">KGWORKS.NET | BLOG</a>";
out.println(strText);

これだと、Syntax errorになっちゃう。

でもこうすると大丈夫。

String strText = null;
strText = "<a href='http://www.kgworks.net/blog/’>KGWORKS.NET | BLOG</a>";
out.println(strText);

こんな感じで、バックスラッシュを使わなければ特に問題ない。

ちなみに先頭部分で
<%@ page language="java" contentType="text/html; charset=EUC-JP"
pageEncoding="EUC-JP"%>

という宣言を行っていて、ファイル自体もEUC-JPで保存してる。

で、JSPからServletに変換する時に化けるのか、ServletからJavaにコンパイルする時に化けるのかという点を確認するために、work以下のファイルの覗いてみると、JSPからServletに変換する段階で化けてた。

strText = "<a href=<EF><BE><A5>"http://www.kgworks.net/blog/<EF><BE><A5>"><E3><83><86><E3><82><B9><E3><83><88></a>";
↑こんな感じ

ぐぐった中の内容に、「\」を使わなきゃいいという回答もあったんだけど、そうもいかないだろうと。

Java系って内部処理はデフォルトでUTF-8だった気がするので、そこら辺が絡んでくるのかな。

Javaの経験は無いに等しいけど、根本的な部分を探れば解決しそう・・・。
というか解決してほしい。

Tags: Java 

前の記事: Zend Framework 1.5 プレビューリリースが公開されました

次の記事: Subversionでバイナリファイルを管理する場合の注意点

この記事へのコメント

まだコメントはありません

この記事にコメントする

お名前(必須)

メールアドレス

URL

本文(必須)

Profile

    宮川恵次(Keiji Miyakawa)
    フリーでシステム開発やインフラ構築等を行っています。

Google Friends Connect


Ads


Subscribe

    RSS Feed For KGWORKS.NET
    Atom Feed For KGWORKS.NET