ロシア文字の排除をしたいと思い、
以下のように記述してみたのですが
カタカナの「ヤツ」「ヤッ」に以下でマッチングしてしまいます。
文字コードはShift-jisを使用しているのですが
誤判定を回避する策はないでしょうか?
roshia_moji=qw(А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я);
foreach (@roshia_moji) {
if (index($a,$_) >= 0){
push(@error, 'ロシア文字は使用できません。');last;
}
}
No.1ベストアンサー
- 回答日時:
通常、Shift_JISの2バイト文字は「2文字」として処理されます。
'ヤツ'は2文字ではなく、 "\x83\x84\x83\x63" の4文字です。
同様に、このロシア文字も2バイト文字なので、それぞれが2文字扱いです。
ここで、'с'は"\x84\x83"です。
この"\x84\x83"がヤの2バイト目+ツの1バイト目と一致します。
対策は、次のどちらかになります。
・2バイト文字を考慮するものを利用する。場合によっては自作する。
・Encodeモジュールを使って、 utf8文字列にdecodeする。
utf8文字列にすれば、多バイト文字でも「1文字」扱いになるので、index等が普通に使える。
なるほど、そのような理由だったのですね。
utf8で試してみたのですが、たぶん私の記述に問題があったのだと思うのですが
誤判定が多かったので、これに2バイト目が83で終わる文字すべてを指定して
その文字があったらロシア文字として扱わないようにしました!
どうもありがとうございました!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java Javaの問題なのですが、「3文字以上の英数字文字列を入力し、文字列の中に文字(9)が出てくるまでの 1 2023/06/06 18:55
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- その他(言語学・言語) ロシア語について質問です。至急です。 3 2022/03/23 11:07
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- Visual Basic(VBA) VBA シート上にドロップダウンリストを作り、予め指定値をセットしたいのですが 1 2023/03/25 15:15
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- C言語・C++・C# VisualStudioのソースコードで漢字を使いたい 4 2022/05/21 10:16
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Java VScodeのターミナルの文字化けについて 1 2022/09/27 22:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
10Mバイトて文字数に すると何...
-
バイナリとBCDコード
-
UTF-8で5~6バイトになる文字コ...
-
COBOLのCOMP形式について
-
エクセルシート名の制限を変更...
-
char str[256]の256の意味は?
-
VBAでUnicodeしか存在しない文...
-
バイト列とバイナリ列の違いが...
-
SQLで1バイト、2バイト混在...
-
1KBが1024byteな理由
-
日付時刻を4バイトに
-
URLは最高何文字まで可能なので...
-
Javaで日本語1文字のバイト数
-
ビットスワップとバイトスワッ...
-
文字数を取得したい
-
3バイト文字(UTF-8)をprintfで...
-
ピクセル,dpiから容量(バイト...
-
VB2008 2バイト文字の化け字...
-
【VB2005】テキストボックス内...
-
Visual Basicでパック10進(2進...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UTF-8で5~6バイトになる文字コ...
-
10Mバイトて文字数に すると何...
-
エクセルシート名の制限を変更...
-
COBOLのCOMP形式について
-
char str[256]の256の意味は?
-
バイナリとBCDコード
-
「1TB」のHDDに日本語は何字入...
-
Javaで日本語1文字のバイト数
-
バイト列とバイナリ列の違いが...
-
SQLで1バイト、2バイト混在...
-
ピクセル,dpiから容量(バイト...
-
C++ Builderで文字列をバイトに...
-
64bit対応
-
ワイド文字のバイト数が取得で...
-
UCS-2の一覧表が欲しい
-
3バイト文字(UTF-8)をprintfで...
-
VBAでShift-JISのURLエンコード
-
機種依存文字をチェックしたい。
-
ビットスワップとバイトスワッ...
-
VBSでテキストファイルの文字列...
おすすめ情報