投稿日:2003年10月24日 作成鷹の巣

No.13052 tomcat4 + apache2で JAVAを実行すると文字化けする



tomcat4 + apache2で JAVAを実行すると文字化けする

No.13052 投稿時間:2003年10月24日(Fri) 00:23 投稿者名:takeshi URL:

はじめまして。 初めてLinux(Redhat9.0)をインストールし、tomcat4-4.1.18 + apache2.0.47 を
インストールし、JAVA(j2sdk1.4.02)をインストールし、JAVAを実行しました。
1バイト文字は正常に表示されるのですが、2バイト文字がすべて化けて表示されます(??? or ・・)
(windowsのIE6.0でwebページを見ています)

(windowsマシンでJAVAソースを作成し、FFFTP(ASCII転送/ホスト文字コード EUC)で
linuxにファイルを転送しています)

色々インターネットで調べたのですが分かりませんでした。
下記は私の設定した内容です。

・httpd.conf を変更・追加
AddDefaultCharset Off (元の設定:ISO-8859-1)

AddCharset EUC-JP .euc-jp (追加)
AddCharset shift_jis .sjis (追加)

・tomcatのweb.xml を変更
<?xml version="1.0" encoding="EUC-JP"?> (元の設定:ISO-8859-1)

を変更しました。

もし何か私の設定間違えや、設定不足等何かお気づきになりましたら
教えていただけないでしょうか・・・

申し訳御座いませんが、よろしくお願い致します。


プログラム周辺の文字コードは?

No.13054 投稿時間:2003年10月24日(Fri) 01:14 投稿者名:帯鯖 URL:

帯鯖@名古屋です。

現段階では、原因の特定は困難だと思います。
まずは、動作の症例を挙げてください。

・プログラム自体の文字コードは?
・charset で明示した文字コードは?
・$ java コマンドで、Shift_JIS, EUC-JP の日本語を正しく標準出力できるか?

設定ミスよりも、プログラム自体の文字コードか、あるいはコンテナで解釈、出力する文字コードと
プログラムの文字コードが一致していないことが原因に思います。

なぜ、敢えて web.xml で EUC(系)に指定するのかも不思議です。

> はじめまして。 初めてLinux(Redhat9.0)をインストールし、tomcat4-4.1.18 + apache2.0.47 を
> インストールし、JAVA(j2sdk1.4.02)をインストールし、JAVAを実行しました。
> 1バイト文字は正常に表示されるのですが、2バイト文字がすべて化けて表示されます(??? or ・・)
> (windowsのIE6.0でwebページを見ています)
> > (windowsマシンでJAVAソースを作成し、FFFTP(ASCII転送/ホスト文字コード EUC)で
> linuxにファイルを転送しています)
> > 色々インターネットで調べたのですが分かりませんでした。
> 下記は私の設定した内容です。
> > ・httpd.conf を変更・追加
> AddDefaultCharset Off (元の設定:ISO-8859-1)
> > AddCharset EUC-JP .euc-jp (追加)
> AddCharset shift_jis .sjis (追加)
> > ・tomcatのweb.xml を変更
> <?xml version="1.0" encoding="EUC-JP"?> (元の設定:ISO-8859-1)
> > を変更しました。
> > もし何か私の設定間違えや、設定不足等何かお気づきになりましたら
> 教えていただけないでしょうか・・・
> > 申し訳御座いませんが、よろしくお願い致します。


正しく日本語表示できていました。

No.13062 投稿時間:2003年10月24日(Fri) 23:34 投稿者名:takeshi URL:

> 帯鯖@名古屋です。
>
> 現段階では、原因の特定は困難だと思います。
> まずは、動作の症例を挙げてください。
>
> ・プログラム自体の文字コードは?
> ・charset で明示した文字コードは?
> ・$ java コマンドで、Shift_JIS, EUC-JP の日本語を正しく標準出力できるか?
正しく日本語表示できていました。

>
> 設定ミスよりも、プログラム自体の文字コードか、あるいはコンテナで解釈、出力する文字コードと
> プログラムの文字コードが一致していないことが原因に思います。
> なぜ、敢えて web.xml で EUC(系)に指定するのかも不思議です。
初めてのLinuxな物で、ネットで調べ、これかな?と思うものはすべてやっていました。
(関係なかったですか?)

申し訳御座いません。 今さっき動きました。
javac -encoding Shift_JIS HelloWold.java
-------------------
Windowsでファイルを作成し、 FFFTPでファイル転送。
動かなかったもので、HelloWorld.java をコピーし(Linux上で) HelloWorld2.java ・・・ と色々作っていました。
何度も [-encoding Shift_JIS]をつけてコンパイルしていたのですが、
VNCでWindosとLinuxを接続し、こちらで修正した物をコンパイル ⇒ 実行 していました。
(これがいけなかったみたいです)

色々な情報を見てしまうと 「EUC-JP」が絶対と思えていました。
「EUC-JP」とJAVAで指定し、「SHIFT_JIS」で見える方法があると思っていました。
申し訳御座いません

ごらんの通り素人丸出しで、困惑がさらなる困惑を生む状況がまた発生しそうです・・・
こんな私ですが、これからもLinuxを精進しようとおもいます。

ご協力ありがとう御座いました。


文字コードについてのアドバイス

No.13065 投稿時間:2003年10月25日(Sat) 00:58 投稿者名:帯鯖 URL:

帯鯖@名古屋です。

無事な動作、おめでとうございます。

困惑させるつもりではないですが、
UNIX で EUC をは標準で扱いますが、Web サーバにするなら Shift_JIS も扱えるようにするとよいと思います。

最近のブラウザでは文字コードを賢く判別できますが、古いブラウザや一部ブラウザでは自動判別できず文字化けが発生します。
i-mode では Shift_JIS しか扱えませんし、あるいは FORM で POST する場合には、コンテナの内部コードである Unicode に
標準依存してしまうことにより、受け取りと受け渡しの文字コード指定およびコード変換の明示が、プログラム内で義務付けられます。

また、JDBC を使い始めると、DB 自体の文字コードの依存問題から、下図のように EUC、Shift_JIS などを混在させなければなりません。

クライアント

↓ Shift_JIS で明示されたページから POST

--サーブレット処理--------------------

↓ Shift_JIS → EUC 変換

↓→ DB UPDATE(EUC フォーマット)
↓← DB SELECT(EUC フォーマット)

↓ EUC → Shift_JIS 変換

-------------------------------------

↓ Shift_JIS で返却

クライアント


サーブレットコンテナ内での受け取りと受け渡し、および Java コード自体を、
一般的な Shift_JIS に設定すると、全体的に扱いやすくなります。


直感理解を頂けるか不安ですが、サーブレット開発で必ず突き当たる問題です。
いろいろ試してみて勘を掴んでおくと、後々スムースに進められますよ。

> > 帯鯖@名古屋です。
> >
> > 現段階では、原因の特定は困難だと思います。
> > まずは、動作の症例を挙げてください。
> >
> > ・プログラム自体の文字コードは?
> > ・charset で明示した文字コードは?
> > ・$ java コマンドで、Shift_JIS, EUC-JP の日本語を正しく標準出力できるか?
> 正しく日本語表示できていました。
>
> >
> > 設定ミスよりも、プログラム自体の文字コードか、あるいはコンテナで解釈、出力する文字コードと
> > プログラムの文字コードが一致していないことが原因に思います。
> > なぜ、敢えて web.xml で EUC(系)に指定するのかも不思議です。
> 初めてのLinuxな物で、ネットで調べ、これかな?と思うものはすべてやっていました。
> (関係なかったですか?)
>
> 申し訳御座いません。 今さっき動きました。
> javac -encoding Shift_JIS HelloWold.java
> -------------------
> Windowsでファイルを作成し、 FFFTPでファイル転送。
> 動かなかったもので、HelloWorld.java をコピーし(Linux上で) HelloWorld2.java ・・・ と色々作っていました。
> 何度も [-encoding Shift_JIS]をつけてコンパイルしていたのですが、
> VNCでWindosとLinuxを接続し、こちらで修正した物をコンパイル ⇒ 実行 していました。
> (これがいけなかったみたいです)
>
> 色々な情報を見てしまうと 「EUC-JP」が絶対と思えていました。
> 「EUC-JP」とJAVAで指定し、「SHIFT_JIS」で見える方法があると思っていました。
> 申し訳御座いません
>
> ごらんの通り素人丸出しで、困惑がさらなる困惑を生む状況がまた発生しそうです・・・
> こんな私ですが、これからもLinuxを精進しようとおもいます。
>
> ご協力ありがとう御座いました。


今後の問題点までお教え頂いてありがとうございます。

No.13077 投稿時間:2003年10月25日(Sat) 22:50 投稿者名:takeshi URL:

質問の回答から、今後の問題点までお教え頂いてありがとうございます。

EUC-JP, SHIFT_JISの事をもっと理解しなければいけないと
思っています。

確かに色々なページを見て、DBの内容が正しく表示されない等・・・
は多くのページにのっていました。
今後とも色々な本、インターネットで勉強したいと思います。

ご協力ありがとうございました


|目次|掲示板|過去ログ目次|▲頁先頭|