none
Asc関数について(全角文字) RRS feed

  • 質問

  • Asc関数は、-32768 ~ 32767の値を返すとなっていますが、
    全角文字の最小コード、最大コードって何なんでしょう?

    asciiコードと、全角文字の関係を今ひとつ理解していなくて
    何か変な質問ですが、宜しくお願いします。

     

    最小コード:(全角スペース) -32448
    最大コード:黑           -949

     

    この辺りがそうなんでしょうか?

     

    「-32768 ~ 32767」の値を返すとありますが、正の値の全角文字って
    何があるんでしょうか?

    For文で回してみてもよく分からなくて。
    Chr(20000)って半角の「N」が返ってきますが。。。

     

    宜しくお願いします。

     

    環境:WindowsXP SP2
          VB6

    *VB6の環境がなくて、上記asciiコードの確認はVBA(Excel2000)で
     見ました。

    2008年10月21日 14:19

回答

  •  

    > Asc関数は、-32768 ~ 32767の値を返すとなっていますが、
    > 全角文字の最小コード、最大コードって何なんでしょう?

    > asciiコードと、全角文字の関係を今ひとつ理解していなくて
    > 何か変な質問ですが、宜しくお願いします。

    VB6のAsc関数はシフトJISコードを返します。

    なぜ「-32768 ~ 32767の値を返す」かというと、符号付16ビット整数で値が返ってくるためです。

    ※というより10進数で考えると混乱の元となりますので、Hex$で16進数に変換して文字コードを参照してみてください。

     

    文字コードの確認方法ですが、IME2007を例にとりますと、IMEのツールバーからIMEパッドを開き、

    文字カテゴリから「シフトJIS」を選択します。

    それで右ペインに文字コードと文字の一覧が表示されます。

     

    > For文で回してみてもよく分からなくて。
    > Chr(20000)って半角の「N」が返ってきますが。。。

    20000で(いわゆる)半角の「N」が返る理由ですが、20000を16進数に変換すると4E20になります。

    文字コード一覧で調べると、&H4Eは「N」に該当します。

    VB6のChr関数の実装にもよりますが、先頭の&H4Eだけを見て半角文字と判断して「N」だけを表示したと思われます。

     

    2008年10月21日 15:19
  • シフトJISの範疇で全角文字かどうかの判定なら

    Asc()が負数なら全角文字と思えばよいと思います。

    2008年10月21日 17:25
  •  さいらす さんからの引用

    asciiコードと、全角文字の関係を今ひとつ理解していなくて
    何か変な質問ですが、宜しくお願いします。

    この辺とかどうですか?

    http://www.kanzaki.com/docs/jcode.html#sjis

     

     さいらす さんからの引用

    「-32768 ~ 32767」の値を返すとありますが、正の値の全角文字って
    何があるんでしょうか?

    「全角文字」の定義が分かりませんが、ShiftJISの文字コード領域では先頭バイトが0x81~0x9F、0xE0~0xEFのようなので、結果的に負の範囲になりますね。

    2008年10月22日 14:56
    モデレータ

すべての返信

  •  

    > Asc関数は、-32768 ~ 32767の値を返すとなっていますが、
    > 全角文字の最小コード、最大コードって何なんでしょう?

    > asciiコードと、全角文字の関係を今ひとつ理解していなくて
    > 何か変な質問ですが、宜しくお願いします。

    VB6のAsc関数はシフトJISコードを返します。

    なぜ「-32768 ~ 32767の値を返す」かというと、符号付16ビット整数で値が返ってくるためです。

    ※というより10進数で考えると混乱の元となりますので、Hex$で16進数に変換して文字コードを参照してみてください。

     

    文字コードの確認方法ですが、IME2007を例にとりますと、IMEのツールバーからIMEパッドを開き、

    文字カテゴリから「シフトJIS」を選択します。

    それで右ペインに文字コードと文字の一覧が表示されます。

     

    > For文で回してみてもよく分からなくて。
    > Chr(20000)って半角の「N」が返ってきますが。。。

    20000で(いわゆる)半角の「N」が返る理由ですが、20000を16進数に変換すると4E20になります。

    文字コード一覧で調べると、&H4Eは「N」に該当します。

    VB6のChr関数の実装にもよりますが、先頭の&H4Eだけを見て半角文字と判断して「N」だけを表示したと思われます。

     

    2008年10月21日 15:19
  • シフトJISの範疇で全角文字かどうかの判定なら

    Asc()が負数なら全角文字と思えばよいと思います。

    2008年10月21日 17:25
  •  さいらす さんからの引用

    asciiコードと、全角文字の関係を今ひとつ理解していなくて
    何か変な質問ですが、宜しくお願いします。

    この辺とかどうですか?

    http://www.kanzaki.com/docs/jcode.html#sjis

     

     さいらす さんからの引用

    「-32768 ~ 32767」の値を返すとありますが、正の値の全角文字って
    何があるんでしょうか?

    「全角文字」の定義が分かりませんが、ShiftJISの文字コード領域では先頭バイトが0x81~0x9F、0xE0~0xEFのようなので、結果的に負の範囲になりますね。

    2008年10月22日 14:56
    モデレータ
  • こんにちは。中川俊輔 です。

     

    皆様、回答ありがとうございます。

     

    さいらすさん、フォーラムのご利用ありがとうございます。

    その後いかがでしょうか?

    有用な情報と思われる回答へ回答済みチェックをつけさせていただきました。

    追加の質問等ありましたら、ぜひ投稿してみてください!

     

    今後ともフォーラムをよろしくお願いします。

    それでは!

    2008年11月5日 9:00