- PR -

Vistaの漢字について ASP.NET(VB)

投稿者投稿内容
なおこ
会議室デビュー日: 2007/09/21
投稿数: 10
投稿日時: 2007-09-21 16:35
はじめまして。
初歩的な質問になってしまってすいません。
Webアプリケーションで、
クライアントから入力されたデータをもとに、サーバ側でActiveReportsを使ってPDFを作成し、出力するシステムを作ろうとしています。
サーバはWindows2000もしくはWindows2003となり、クライアントはVistaも含めたWindowsです。
そこでなのですが、
Vistaでは使用できる漢字が大幅に増えたという記事を読みました。
ということは、クライアント(Vista)の入力画面では正しく入力できても、サーバのActiveReportで帳票を作成する際には、文字化けするケースがあるのではないかと思うのです。
これを解決するには、入力された文字がサーバ側に存在するかどうか、文字コードで確認して、存在しなければエラーを出してあげればよいのかなと思うのですが(そもそも解決法の考え方が間違っていたらすみません)、送られた文字がサーバ側に存在するかどうかを一文字づつ文字コードで確認する方法がわかりません。
どなたか、方法をご存知でしたら、お教え下さい。
よろしくお願い致します。
taku
ぬし
会議室デビュー日: 2002/11/12
投稿数: 918
お住まい・勤務地: 墨田区→中野区
投稿日時: 2007-09-21 17:01
 下記のことですよね?

Vistaがもたらす文字コード問題

とりあえず、記事にあるようにサーバー側にフォントをインストールすれば良いのではないでしょうか。

 うちはSierじゃないから、あくまで社内システムしかないので、
Vistaは当面無関係ということで、Vista発売時期に社内に警告出したっきり、
これといった対応をするとかって動きはないですね。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 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/
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 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
投稿数: 10
投稿日時: 2007-09-21 20:44
ありがとうございます。
Windows2003Serverの方は、フォントパッケージをインストールすれば概ね対応できそうなのですが、Windows2000Serverの場合は、パッケージが無いみたいで、やはり、はじく必要がありそうですね。
System.Globalization.StringInfoのページを拝見させて頂きました。
恥ずかしながら、StringInfoの存在さえ知りませんでした。
StringInfoについて、正直なところ今ページを見ただけでは理解できず、これから勉強しないといけないのですが、
StringInfoで、どのようにすれば、サーバで使える文字かどうかを判定できるのでしょうか。
すいません、重ねておねだりをするようで。





たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2007-09-22 12:14
引用:

StringInfoで、どのようにすれば、サーバで使える文字かどうかを判定できるのでしょうか。



すでにご紹介していますが、この辺を読んでみてください。
調べこまれていますし、かなり良くまとまっています。
サンプルプログラムコードも書かれていますよ。

りばてぃ氏作成の資料
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/21
投稿数: 10
投稿日時: 2007-09-26 10:16
おはようごうざいます。
ありがとうございます。
風邪で寝込んでいて、返信が遅れてしまい、すみまんせん。
StringInfoやIsSurrogateを使って、文字数を数えたり、サロゲート文字かどうかの判別の仕方はわかりましたが、Windows2000Server上で対応可能な文字じゃどうかの判別方法は、いまだわからない状態です。
String.LengthとStringInfoの文字数が一致して、なおかつサロゲート文字ではないことを確認するだけでは、足りないですよね。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2007-09-26 10:33
提示したリンク先にVistaで変更された、あるいは追加された文字コードの一覧が載っています。その文字コードと一文字ごとに比較する以外には無いでしょうね。

本当は「Vistaで変更された、あるいは追加された文字コードの一覧」と比較するのではなく「Windows2000で使用できる文字コードの一覧」と比較するべきなんでしょうけど、あまり現実的じゃないので。
_________________
甕星 <mikahosi@abox9.so-net.ne.jp>
http://blogs.msmvp.jp/mikahosi/

スキルアップ/キャリアアップ(JOB@IT)