Top > 88VAユーザーズクラブ > Q&A集 > 80
#0080/9999 Q&A集
★タイトル (88VAUSER)  95/11/01  00:00  ( 47)
9.5    シフトJISで全角半角を判断するには?
★内容
例えば、「シフト」という文字列を文字コードで表わすと次のようになります。

      シ    フ    ト
     ~~~~~ ~~~~~ ~~~~~
     83 56 83 74 83 67 (hex)

この中で、コード「56h,74h,67h」はそれぞれ、`V',`t',`g' に 相当してしまう
為、全角文字とこういった単体の所謂アスキーキャラクタを区別しないとフィル
タソフト等は誤動作してしまう事になります。

SHIFT-JIS は、JIS 8bit code で 未定義になっている、80h〜9fh 及び、 e0h〜
ffhを全角文字の上位バイトとして割り当て、下位バイトには、JIS の 奇数区に
あるものを  40h〜9ehに、偶数区にあるものを 9fh〜cfh に割り当てる事によっ
て、全角文字(マルチバイト文字、2バイト文字)を表現します。

通常ファイル先頭から、全角/半角判断をするのであれば、1バイトづつ拾って、
それが、80h〜9fh,e0h〜ffh までにあれば、それを全角文字とみなして、次の下
位バイトと一緒に扱うようにすれば、下位バイト文字に関する情報は特に考えな
くても良いと思います。 (ファイルを途中からランダムに読むなどの方法を取る
のであれば、下位バイトから上位バイトを導き出すような方法も必要になってく
るかもしれませんが。)

                     ASCII コード 一覧


          0x 1x 2x 3x 4x 5x 6x 7x 8x 9x Ax Bx Cx Dx Ex Fx

        0 ^@ ^P    0  @  P  `  p        ?  ー  タ  ミ
        1 ^A ^Q !  1  A  Q  a  q        。  ア  チ  ム
        2 ^B ^R "  2  B  R  b  r        「  イ  ツ  メ
        3 ^C ^S #  3  C  S  c  s        」  ウ  テ  モ
        4 ^D ^T $  4  D  T  d  t        、  エ  ト  ヤ
        5 ^E ^U %  5  E  U  e  u   2   ・  オ  ナ  ユ   2
        6 ^F ^V &  6  F  V  f  v   バ   ヲ  カ  ニ  ヨ   バ
        7 ^G ^W '  7  G  W  g  w   イ   ァ  キ  ヌ  ラ   イ
        8 ^H ^X (  8  H  X  h  x   ト   ィ  ク  ネ  リ   ト
        9 ^I ^Y )  9  I  Y  i  y   文   ゥ  ケ  ノ  ル   文
        A ^J ^Z *  :  J  Z  j  z   字   ェ  コ  ハ  レ   字
        B ^K ^[ +  ;  K  [  k  {        ォ  サ  ヒ  ロ
        C ^L → ,  <  L  \  l  |        ャ  シ  フ  ワ
        D ^M ← -  =  M  ]  m  }        ュ  ス  ヘ  ン
        E ^N ↑ .  >  N  ^  n  ~        ョ  セ  ホ  ゙
        F ^O ↓ /  ?  O  _  o           ッ  ソ  マ  ゚

                         <<< end of article >>>


Top > 88VAユーザーズクラブ > Q&A集 > 80