- 締切済み
はじめまして、こんにちわ。
はじめまして、こんにちわ。 ken17officeと申します。 ただいま、VBScriptでプログラム開発しているのですが、 JIS文字コードを利用してメッセージボックスに文字を表示しようとしています。 ところが、 ア、イ、、、、マ、ミ、ム、メ、モ、、、と表示させようとしたのですが、 ア、イ、、、、マ、ミ、・、ム、メ、モ、、、 と”・”が表示されてしまいます。 msgbox String(1,-31874) msgbox String(1,-31873) msgbox String(1,-31872) どうして表示されてしまうのか、 どうかご存知の方、回答宜しくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- SortaNerd_
- ベストアンサー率59% (309/522)
その場所(コードポイント)に相当する文字がないからです。 まず、その文字コードは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)
JISコードの一覧を見るとわかりますが 「ミ」 と 「ム」 の間にはおかしなことに なにもありません。したがって JISコード未設定「・」が出力されます。 IMEパッド 文字一覧などで確認できます。 この場合 キャラクターコードを用いたほうが正確に 再現できると思います。
お礼
ご回答ありがとうございます。 IMEパッドで確認したところ、やはり”・”が表示されました。 最初、トロイの木馬にでもかかったのか?と思いましたが安心しました。 ありがとうございました。