- 締切済み
vista追加文字(jis2004文字)の登録
vistaで変更になったjis2004の文字をperlで作成したWEBページから入力すると、以下の現象が発生します。 1、WEBページからvista(jis2004)で変更になった「葛」(ここでは表示できないが"ヒ"部分が"メ")、「鴎」(ここでは表示できないがメの部分が口3つ)、「高」(はしご高)、「七が三つの文字」を入力しデータ登録する(postgres)。 2、データベースを参照すると、それぞれ以下のように登録されています 「葛」 → 「葛」 「鴎」 → 「鷗」 「高」 → 「・」 「七が三つの文字」→ 「㐂」 3、このDBの内容をWEBで表示すると以下のようなに表示されます。 「葛」 → 「葛」 「鴎」 → 「鴎」 「高」 → 「高」 「七が三つの文字」→ XPでは「・」、vistaでは「七が三つの文字」 4.クロスサイトスクリプティング対応したモジュールで3と同様の内容を表示すると以下のようになります(&を&に置換)。 「葛」 → 「葛」 「鴎」 → 「鷗」 「高」 → 「高」 「七が三つの文字」→ 「㐂」 ここで質問ですが、 (1)DBに「鴎」などのShift_JISの文字コードで登録されるのはなぜでしょうか?(サーバはLINUXで文字コードはEUCです。) (2)クロスサイト対応をしたページでは、上記文字がShift_JISコードで表示されてしまいますが、この対応策は何かないでしょうか? ちなみに「鴎外」の新文字をこのサイトで入力すると「鷗外」となります。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- thatsthat
- ベストアンサー率55% (15/27)
vistaは使っていないので理屈っぽい事だけ・・・。 鷗と㐂がunicode固有文字だからでしょう。 他のコードに変換できませんので、unicodeのままDB(EUCの世界?)に入ってしまっているようです。 Shift_JISになっているわけではなさそうです。 葛と高は、字体がかわっただけで、文字コードは変わっていないので、問題ないです。 3では、単純にフォントが有るのでなんとか表示できてます。 (&#40407の方はwin2000でもXPでもフォントは入っているようです &#13314の方は、vista新規のようですね) 4は、unicode文字がXSS対応で 特殊文字に対する処理を受けた結果ですね。 対処として思いつくのは・・・ ・unicode固有文字を絶対使わない IMEの設定で制限できるような事がどこかに書かれていました。 ・他の、似た文字(unicode固有でない物)に置き換える &#40407→「鴎」のように。 ・全員vista、またはjis2004対応フォントをインストールしたPCを使い、 3の形で妥協する。 この時、XSS対応の処理を変更して、&#40407と&#13314を (他に同じような文字があればそれらも) そのままHTML出力するように変更する必要があります。 といった所でしょうか。
補足
なるほど、unicode固有文字は、DBにそのまま登録されるのですね~。DBに複数文字コードが登録されると気持ち悪い気はしますが・・・そういうものなんですね。。 対応策は難しいですね。 >・unicode固有文字を絶対使わない > IMEの設定で制限できるような事がどこかに書かれていました。 この対応は、今回不特定多数のWEBを対象としているため不可能です。 >・全員vista、またはjis2004対応フォントをインストールしたPCを使>い、3の形で妥協する これも不可能ですね~。jis2004の対応のためにXSS対応を外すのはリスクが大きすぎますね。 >・他の、似た文字(unicode固有でない物)に置き換える > &#40407→「鴎」のように。 これは可能ですが、WEBページすべての処理にこの変換を入れるのは骨が折れますね~(><)しかも、追加文字もかなり多いようですし・・・