• 締切済み

はじめまして、こんにちわ。

はじめまして、こんにちわ。 ken17officeと申します。 ただいま、VBScriptでプログラム開発しているのですが、 JIS文字コードを利用してメッセージボックスに文字を表示しようとしています。 ところが、 ア、イ、、、、マ、ミ、ム、メ、モ、、、と表示させようとしたのですが、 ア、イ、、、、マ、ミ、・、ム、メ、モ、、、 と”・”が表示されてしまいます。 msgbox String(1,-31874) msgbox String(1,-31873) msgbox String(1,-31872) どうして表示されてしまうのか、 どうかご存知の方、回答宜しくお願いいたします。

みんなの回答

回答No.2

その場所(コードポイント)に相当する文字がないからです。 まず、その文字コードはJISではなくShift_JISです。 Shift_JIS(とその前身であるJIS1バイトコード)は、ASCIIコードとの互換性を保つため、ASCIIコードで制御文字があるコードポイントには文字が定義されていません。 そのようなコードポイントは0x00~0x1Fと0x7Fがあります。十進数で書けば0~32と127です。 ここで問題となるのが0x7Fで、7ビットであるASCIIにおいては端の場所なのですが、8ビットのJIS1バイトコードやShift_JISでは中間の場所に当たります。 なので一見不自然にコードポイントに空きができているのです。 文字コードを十進数で書くと分かりづらいですが、16進数で書きなおせば、 msgbox String(1,&H837E) msgbox String(1,&H837F) msgbox String(1,&H8380) となり、2バイト文字の2バイト目が「7F」になっていることが一目瞭然です。

  • chuchuo
  • ベストアンサー率45% (99/217)
回答No.1

JISコードの一覧を見るとわかりますが 「ミ」 と 「ム」 の間にはおかしなことに なにもありません。したがって JISコード未設定「・」が出力されます。 IMEパッド 文字一覧などで確認できます。 この場合 キャラクターコードを用いたほうが正確に 再現できると思います。

参考URL:
http://hp.vector.co.jp/authors/VA008536/data/ascii.html
ken17office
質問者

お礼

ご回答ありがとうございます。 IMEパッドで確認したところ、やはり”・”が表示されました。 最初、トロイの木馬にでもかかったのか?と思いましたが安心しました。 ありがとうございました。

関連するQ&A