ASPSQLServerのシステムがあって。
特定の文字を検索を行う際に
んなもんねーよヽ(`Д´)ノ
といわれてしまう。


文字コードはShift-JIS。
その対象文字は「×」と「±」


検索対象用語に「3×3のマス」とかあったとしねぇ。
「3のマス」で引っかかるし
「3」だけでも引っかかる。
ここまでは大丈夫。
しかして「3×3」では引っかからないのよ。
ASPから検索すると。


SQLServerが入っているマシンで直接SQLを発行したら大丈夫だった。
「×」も「±」も検索できる。
いたってふつーな動き。


となれば検索時の検索ワードを変換していたりしないかと調査しますわな。
結果、攻撃へのサニタイジングしてありますわな。
「Server.HTMLEncode()」なるもので。


あたしゃ思いました。
Scriptにしろタグにしろ半角英数字記号ですよ?
なんで全角が?
「+」とか「−」とかははたまた「÷」まで無問題なのになぜ( ゚д゚)?


しかして現実は「×」はだめ。
ぐっすし。


文字コードを調べてみた。
Shift-JISでみると、

「+」:「0x817b」
「−」:「0x817c」
「±」:「0x817d」
「×」:「0x817e」
「÷」:「0x8180」

ん〜ならんどる。なんで間だけあかんねん。ヽ(`Д´)ノ


IMEパッドで文字コードを見ていたらUniCodeが表示されていた。
お?と思いUniCodeも調べてみた。

「+」:「0xff0b」
「−」:「0xff0d」
「±」:「0x00b1」
「×」:「0x00d7」
「÷」:「0x00f7」

並べ替えると

「±」:「0x00b1」
「×」:「0x00d7」
「÷」:「0x00f7」
「+」:「0xff0b」
「−」:「0xff0d」

並んだ並んだ。前2つがあかんといえそう。
しかして「÷」もえらい近い位置にある。
そんな0x00なやつらは基本ラテンの中に埋もれとるし。


物は試しにラテン文字で検索してみたら、
しっかり「Ö」とか「&OSlash;」とか「&Ugave;」ってな具合に修正されてた。
「×」は「×」のままだったけど。


なんじゃこりゃー!!!ヽ(`Д´)ノ ウワァァン
って感じなのでとりあえずお茶を濁してみた。


説明にもこまるのはこまるのぅ(;´Д`)ハァハァ