- - PR -
Linux上の特殊漢字の扱い
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-10-04 13:26
JAVAに対する話題から外れていると思いますが、
みなさんは、以下のケースにどのように対応しているか 教えてもらえないでしょうか? 開発環境は、 クライアントOS:Windowsシリーズ サーバOS:RedHat9 WEBアプリケーション:JAVA Stutusにて構築 サーバ上DB:PostgreSQL 7.3 WEBサービス:Apache2.0.48及びTomcat4.1.29 クライアントPCから特殊漢字の人名データを 入力してLinuxでは、この特殊漢字を認識できず、 ?と登録され、WEBアプリケーション上の表示も 当然ながら?と表示されますが、この特殊漢字をサポート できるようにしたいですが、これには、どのように対応 なさっているのでしょうか? 何かご存知でしたらよろしくお願いいたします。 | ||||||||
|
投稿日時: 2004-10-04 13:59
単に、エンコードがあってないだけではないでしょうか。
検索エンジンに、「jsp 文字化け」と放り込むだけで、 たくさんの解説サイトがヒットしますよ。 <追記> Javaの話題からはずれるどころか、Webで日本語を扱う上で、 もっともメジャーな課題のひとつだと思います。 ひとつ、腰を入れて対処してみてください。 [ メッセージ編集済み 編集者: Edosson 編集日時 2004-10-04 14:11 ] | ||||||||
|
投稿日時: 2004-10-04 15:18
いや、思うに機種依存文字とか外字とかの問題のような気が・・・。 # ちなみに、私はJavaで外字をどう扱うかなんて全然分からないです ![]() # String型は内部的にUnicodeになっちゃってるんで、外字のShift_JISコードが # Unicodeでどう割り当てられるかが分かれば、とっかかりにはなるんでしょうが。 | ||||||||
|
投稿日時: 2004-10-04 15:59
失礼しました。
エンコーディングの違いならともかく、外字となるとやっかいですね。 ちなみに、外字については、下記のものを見つけました。 http://java-house.jp/ml/archive/j-h-b/012581.html おおざっぱにはしょっていうと、JVMが表示に使っているフォントの、 該当するコードの位置に外字が登録されていれば、使えることもあるとのこと。 | ||||||||
|
投稿日時: 2004-10-04 16:40
いや、それはアプレットの話ですよね。 今回の質問でいえば、PostgreSQLの文字コードがEUCだと仮定すると、 ・Shift-JIS(Windows-31J) <-> Unicode ・EUC-JP <-> Unicode での外字マッピングがおこなえるかどうか、という話だと思います。JavaHouseの話題は 結構古い話なので、今のJavaの実装はどうなのかよくわからないですが、あまり期待できない ですねえ。ところで、
Linuxからの確認は、どのようにされたのでしょうか。たとえコードマッピングができていた としても、対応するフォントがなければ文字化けするのは当然なのですが。 | ||||||||
|
投稿日時: 2004-10-04 17:18
Edosson様、Cluster様、uk様
言葉足らずにかかわらず、色々なご助言を頂き、 ありがとうございます。お手数をおかけして、すみません。 もう少し詳しく話しますと、例えば、人名で、””とかの外字 がLinuxでは登録されていないコードを対象にしています。 Linuxサーバ上では、当然ながらそのありません。 人名でもあるため、これをなんとかLinuxサーバ上にも 表示できるようにしておき、WEBサーバにも表示できるように したいと思っています。めったにお目に掛かれないような漢字 もあり、これらにどのように対応したらよいのか悩まして います。 今は暫定的に、Linuxサーバにもサポートしている漢字に 置き換えて表示していますが、他の所ではどのように対応している のだろうかと思い、投稿させて頂きました。 サーバをWindowsマシンにて統一するしか無いのだろうか と思っています。 >該当するコードの位置に外字が登録されていれば、使えることもあるとのこと 大体の漢字は、これでほぼ表示できていることを確認できています。 上記の例のような漢字では、無理がありすぎるかと思いつづあります。 ちなみにEUC-JPで作成しています。 (これらを含めて話せばと反省しております。文章力不足で申し訳ございません。 <(_ _)>) 紹介して頂いたキーワード、アドレスを基にして 頑張ってみます。助言、ありがとうございました。 | ||||||||
|
投稿日時: 2004-10-04 22:54
私が以前関わったプロジェクトでは、このようにしました。
まず外字ですが、UCS-2上の私用領域にマップする外字を使いました。 各システムのエンコーディングは以下の通りでした。 DB(Oracle):UTF-8 JSP、サーブレット:Shift_JIS ブラウザに送るエンコーディング:UTF-8 ブラウザに送るHTMLのフォント:上記のUTF-8の外字フォント 処理の上ではUTF-8からエンコーディング変換をすることはありませんので、 文字化けの心配はありません。JSPには外字は埋め込みませんでした。 なお、ブラウザでフォントを指定していることから分かるように、 クライアントに外字フォントがインストールされている必要があります。 何かの参考にして頂ければ幸いです。 | ||||||||
|
投稿日時: 2004-10-05 05:01
多分、JDBCドライバ内で文字コード変換に失敗しているんじゃないかと思います。
LinuxというよりJavaの話だと思います。ちょっと実験してみました。
結果 "21,29,"と、EUC-JPではありえないコードが返ってきました。 また、PostgreSQL上で、
とすると正しい結果が返ってくるようです。 (すいません、この後ウソを書いたようなので一旦削除します) [ メッセージ編集済み 編集者: iakio 編集日時 2004-10-05 09:40 ] |