
No.2ベストアンサー
- 回答日時:
半角文字は最上位ビットを見ればわかるので定義しなくても判別は出来ます。
問題は40バイト目が全角文字(最上位ビットが1)の場合にそれが1バイト目なのか2バイト目なのか3バイト目(補助漢字は3バイトになるのがEUCの欠点ですね)なのかの判断が出来ないことです。
例えば"aいいいい"という文字列はEUC-JPでは
0x61, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4
になります。
結局、文字列の最初から1バイトずつ順番にチェックしていくしかないのではないでしょうか。
No.1
- 回答日時:
EUCコードについて調べてみれば分かりますが、
1バイト目が、0xA1 ~ 0xFEの場合は、2バイト文字として扱われるようです。
そして1バイト目が、0x8Eだった場合は、次の文字を半角カタカナとして扱います。
質問によると、40バイト取得したいとのことですが、単純に40バイトで切るのなら40バイト分コピーして、
後ろの文字と、その一つ前を判定すれば良いと思います。
でも、半角40文字分の文字列の取得となると、半角カタカナも2バイトで表現されるため、
1文字ずつ判定しながらコピーしなくてはいけません。
気を付けなければならないのが、文字列判定時にcharではなくてunsigned charを使うということです。
これについては、コンピュータ内の負の数の表現方法を勉強すれば分かると思います。
参考URL:http://www.unixuser.org/~euske/doc/kanjicode/ind …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UTF-8で5~6バイトになる文字コ...
-
10Mバイトて文字数に すると何...
-
C言語において2バイト文字を検...
-
バイナリとBCDコード
-
char str[256]の256の意味は?
-
vbaからHTTP POST送信しても途...
-
COBOL PICTUREで X,S,Vの意味
-
ピクセル,dpiから容量(バイト...
-
機種依存文字をチェックしたい。
-
変数 および ポインタのサイ...
-
VC++で日本語(マルチバイト)フ...
-
シフトJISの2バイト文字
-
文字数を取得したい
-
ダブルバイトからの変換で、文...
-
UCS-2の一覧表が欲しい
-
COBOLのCOMP形式について
-
printfの%eで指数部分の桁数を...
-
stable diffusionのエラー
-
utf-8でメールを送信すると件名...
-
C言語でのLinuxとwindows共通の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UTF-8で5~6バイトになる文字コ...
-
10Mバイトて文字数に すると何...
-
char str[256]の256の意味は?
-
COBOLのCOMP形式について
-
バイト列とバイナリ列の違いが...
-
エクセルシート名の制限を変更...
-
ピクセル,dpiから容量(バイト...
-
ビットスワップとバイトスワッ...
-
テキストBOXの入力制限について
-
機種依存文字をチェックしたい。
-
「1TB」のHDDに日本語は何字入...
-
C++ Builderで文字列をバイトに...
-
全角半角を調べるライブラリ関...
-
SQLで1バイト、2バイト混在...
-
VB6とSQL Serverの桁の扱い方に...
-
jis x 0208 について
-
VBAでShift-JISのURLエンコード
-
この関数はどのプログラミング...
-
COBOL PICTUREで X,S,Vの意味
-
半角、全角の判別方法
おすすめ情報