- - PR -
Vistaの漢字について ASP.NET(VB)
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-09-21 16:35
はじめまして。
初歩的な質問になってしまってすいません。 Webアプリケーションで、 クライアントから入力されたデータをもとに、サーバ側でActiveReportsを使ってPDFを作成し、出力するシステムを作ろうとしています。 サーバはWindows2000もしくはWindows2003となり、クライアントはVistaも含めたWindowsです。 そこでなのですが、 Vistaでは使用できる漢字が大幅に増えたという記事を読みました。 ということは、クライアント(Vista)の入力画面では正しく入力できても、サーバのActiveReportで帳票を作成する際には、文字化けするケースがあるのではないかと思うのです。 これを解決するには、入力された文字がサーバ側に存在するかどうか、文字コードで確認して、存在しなければエラーを出してあげればよいのかなと思うのですが(そもそも解決法の考え方が間違っていたらすみません)、送られた文字がサーバ側に存在するかどうかを一文字づつ文字コードで確認する方法がわかりません。 どなたか、方法をご存知でしたら、お教え下さい。 よろしくお願い致します。 | ||||
|
投稿日時: 2007-09-21 17:01
下記のことですよね?
Vistaがもたらす文字コード問題 とりあえず、記事にあるようにサーバー側にフォントをインストールすれば良いのではないでしょうか。 うちはSierじゃないから、あくまで社内システムしかないので、 Vistaは当面無関係ということで、Vista発売時期に社内に警告出したっきり、 これといった対応をするとかって動きはないですね。 | ||||
|
投稿日時: 2007-09-21 17:10
文字コードに関しては以下を参照してください。
http://www.microsoft.com/japan/windows/products/windowsvista/jp_font/default.mspx この問題には定石やCoolな解決方法は無いと思うので、別に間違っているとは思わないですよ。たとえば「WindowsXPにJIS2004対応フォントをインストールして使っている場合はどうするのか?」とか「同じ文字コードに異なる字形が割り当てられている部分はどうするのか?」とか解決できない問題が多いので・・・ _________________ 甕星 <mikahosi@abox9.so-net.ne.jp> http://blogs.msmvp.jp/mikahosi/ | ||||
|
投稿日時: 2007-09-21 19:18
お話されている状況ですと、今回の場合、使えない文字としてはじ
くのが現実的だと思います。 この方法が、ユーザ要件に合うかどうかは、確認してくださいね。 ・サーバ側でチェックする System.Globalization.StringInfoクラスで1文字ずつチェックする。 http://msdn2.microsoft.com/ja-jp/library/system.globalization.stringinfo(vs.80).aspx ・JavaScriptでチェックする charCodeAt()で文字コードをチェックする。 どういう文字をはじくかという点については、これまでに提示された 資料でわかりますよ。 Vistaの登場で、文字問題は、さらに難しくなりまして、Microsoft 主催のセミナーやイベントでも多く扱われています。 Vistaコミュニティローンチイベントで何度も取り上げられました。 そのときの資料が公開されています。 とても参考になりますよ。 りばてぃ氏作成の資料 http://clr-h.jp/forums/storage/37/800/CLRH_Launch2007_Session2.pdf kkamegawa氏作成の資料など http://d.hatena.ne.jp/kkamegawa/searchdiary?word=JIS2004 残念ながら、Windows Vistaに限らず、違うOS間で入力できる文字、 表示できる文字、印字できる文字を完全に一致させることはできま せん。 場合によっては同じバージョンのOSであっても問題は起こりえます。 データベースでは、文字コードの変更や合成文字のために、並べ替 えや検索の扱いがかわるという問題があります。 見た目は1文字なのに4バイト、6バイト、それ以上などという文字 もあります。 本当に頭が痛いです。 _________________ たつごろー codeseek こみゅぷらす | ||||
|
投稿日時: 2007-09-21 20:44
ありがとうございます。
Windows2003Serverの方は、フォントパッケージをインストールすれば概ね対応できそうなのですが、Windows2000Serverの場合は、パッケージが無いみたいで、やはり、はじく必要がありそうですね。 System.Globalization.StringInfoのページを拝見させて頂きました。 恥ずかしながら、StringInfoの存在さえ知りませんでした。 StringInfoについて、正直なところ今ページを見ただけでは理解できず、これから勉強しないといけないのですが、 StringInfoで、どのようにすれば、サーバで使える文字かどうかを判定できるのでしょうか。 すいません、重ねておねだりをするようで。 | ||||
|
投稿日時: 2007-09-22 12:14
すでにご紹介していますが、この辺を読んでみてください。 調べこまれていますし、かなり良くまとまっています。 サンプルプログラムコードも書かれていますよ。 りばてぃ氏作成の資料 http://clr-h.jp/forums/storage/37/800/CLRH_Launch2007_Session2.pdf kkamegawa氏作成の資料など http://d.hatena.ne.jp/kkamegawa/searchdiary?word=JIS2004 takuさん、甕星さんのご紹介されているリンク先にも大事なことがかかれて いますので、一読されることをお勧めします。 _________________ たつごろー codeseek こみゅぷらす | ||||
|
投稿日時: 2007-09-26 10:16
おはようごうざいます。
ありがとうございます。 風邪で寝込んでいて、返信が遅れてしまい、すみまんせん。 StringInfoやIsSurrogateを使って、文字数を数えたり、サロゲート文字かどうかの判別の仕方はわかりましたが、Windows2000Server上で対応可能な文字じゃどうかの判別方法は、いまだわからない状態です。 String.LengthとStringInfoの文字数が一致して、なおかつサロゲート文字ではないことを確認するだけでは、足りないですよね。 | ||||
|
投稿日時: 2007-09-26 10:33
提示したリンク先にVistaで変更された、あるいは追加された文字コードの一覧が載っています。その文字コードと一文字ごとに比較する以外には無いでしょうね。
本当は「Vistaで変更された、あるいは追加された文字コードの一覧」と比較するのではなく「Windows2000で使用できる文字コードの一覧」と比較するべきなんでしょうけど、あまり現実的じゃないので。 _________________ 甕星 <mikahosi@abox9.so-net.ne.jp> http://blogs.msmvp.jp/mikahosi/ |