回答編集履歴

1

JISという表現があいまいだったのでJIS-X0208と注記

2022/08/26 11:22

投稿

otn
otn

スコア84574

test CHANGED
@@ -1,10 +1,10 @@
1
1
  Rubyだとエンコーディング変換の時に変換できない文字があったらその文字を引数にコールバックのメソッドを呼び出せるのですが、他の言語だとそこまで細かい対応はできないですね。
2
2
 
3
- 質問文で`SJIS`と書きつつコードに書いてあるのは`sjis-win`ですが、どちらの範囲が対象なのでしょう?
3
+ 質問文でSJISと書きつつコードに書いてあるのは`sjis-win`ですが、どちらの範囲が対象なのでしょう?
4
- `﨑`を駄目としたいようなので、とりあえずJISの範囲として書きます。
4
+ `﨑`を駄目としたいようなので、とりあえずSJISの範囲として書きます(JIS-X0208の範囲)
5
5
 
6
- `mb_convert_encoding($check,"sjis")`で、JISに無い文字は`?`に変換されるようなので、
6
+ `mb_convert_encoding($check,"sjis")`で、SJISに無い文字は`?`に変換されるようなので、
7
- 変換後の文字列に`?`があったら元の文字列の該当位置を調べて`?`でなかったらJISにない文字だと判断できそうな気がします。
7
+ 変換後の文字列に`?`があったら元の文字列の該当位置を調べて`?`でなかったらSJISにない文字だと判断できそうな気がします。
8
8
 
9
9
  どの文字がおかしいまで知る必要ながなくて、全体としてOKかNGかだけであれば、`?`の個数を比較すればいいかと。
10
10