「1バイト文字」と「2バイト文字」の区別について・・・・。

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: 「1バイト文字」と「2バイト文字」の区別について・・・・。

自分で作るなら

by konisi » 2005年12月01日(木) 18:45

昔とあるプログラムを作る際のデータベースとして作った現在定義されている文字の全てです。
ただ、選出は手作業なのでちょっと過不足があるかもしれません。

出力コード↓ 出力後に選出した結果↓

by 卓漏 » 2005年11月30日(水) 20:22

ありがとうございます。
早速、試してみたいと思います。

by マティ » 2005年11月30日(水) 09:35

手前味噌ですが、以下の記事も参考にして下さい。
SJIS対応文字列処理
UNICODE対応文字列処理

by イグトランス » 2005年11月30日(水) 07:56

 2バイト文字を1文字として数えたければ自分で作る、
Unicodeに変換してその文字数を数えるなどといった方法があります。

 前者の方式ではCharNext関数が使えると思います。
Declare Function CharNext Lib "user32" Alias "CharNextA" (psz As BytePtr) As BytePtr
この関数は1バイト文字2バイト文字を見分けてきちんと次の文字へのポインタを返します。
文字列の終わりにはEx"\0"の文字が入っているので、
そこに到るまでに何文字あったかを数え上げれば良いというわけです。

 後者の方式ではMultiByteToWideChar関数を使います。
これでUnicodeへ変換した後lstrlenW関数で数えます。
Declare Function lstrlenW Lib "kernel32" (pString As *WCHAR) As Long
Unicode(UTF-16)は原則全ての文字が16ビットですので、
Unicodeで変換してしまえば何も考えずに文字数を数えるだけで良いのです。
(正確にはそうでないのですが通常は十分だと思います)

「1バイト文字」と「2バイト文字」の区別について・・・・。

by 卓漏 » 2005年11月30日(水) 06:51

文字数を数えるプログラムを作っているのですが、
1バイト文字(a,A,!,・)は正常に動作しますが、
2バイト文字(あ,亜)はうまくできません。
いちおう、文字数を調べるために、バイト数を返す「Len$関数」を使っているのが原因なのはわかっています・・・。

そこで、1バイト文字と2バイト文字を区別するための方法が知りたいです。
よろしく、お願いします。

ページトップ