勉強不足ゆえにちょっとお勉強。
むう。ちっともGWを満喫してない(..;)
まぁ、それはそれとして、お勉強メモを一つ。
先日サブのフレンドから、禁止ワードエラーが出て茶ノ間が書き込めないとメールを貰いまして。
頂いた文章見ても、禁止してる単語も含まれておらず、はて?と首を傾げて調べる事数十分。
結果…宣伝広告でよくメアドが書いてあった為にワードに含めていた、「@」が原因だという事が分かりました。
無論、フレンドの文章に「@」は入ってませんでした。
なんでこれが引っかかったかというと…どうやら、全角スペースと勘違いされて処理されてるらしいんですね。
「@」は日本語のSJISの全角スペースの2バイト目にも使われるそうで。
禁止ワードに「@」を指定した結果、エンコーディング時に全角スペースと誤訳されて、文章中に含まれていた全角スペースが禁止ワード扱いにされた…と、多分そういう事なんだと思います。
もうちょい詳しく書きますと…。
全角スペースは、SJISで「8140」
@は、SJISで「40」
で、
1.投稿文の中の全角スペースがSJISで「8140」にコーディングされる
2.禁止ワードの@がSJISで「40」にコーディングされる
3.禁止ワードの条件分岐で「8140」の中に「40」が含まれていると判定され、禁止ワードエラー
…という具合なんだと、勝手に解釈しときます(^^;)
あと「@」は、掲示板等を作るプログラム言語「Perl」でも使われる特殊文字で、表を構成する「配列」を表記する場合にも、配列名の先頭に「@」をつけます。
どのみちプログラム上で問題を起こしやすいワードだったわけです。
宣伝広告を防ぐ点では成功したと言えるんですが…これでは書き込みに支障が出ますので、一旦「@」を外しました。
「@」だけエラーになるいい方法が思いついたら、また調整してみます。
書いてはみたものの、忘れてログに消えそうだなぁ…orz
まぁ、それはそれとして、お勉強メモを一つ。
先日サブのフレンドから、禁止ワードエラーが出て茶ノ間が書き込めないとメールを貰いまして。
頂いた文章見ても、禁止してる単語も含まれておらず、はて?と首を傾げて調べる事数十分。
結果…宣伝広告でよくメアドが書いてあった為にワードに含めていた、「@」が原因だという事が分かりました。
無論、フレンドの文章に「@」は入ってませんでした。
なんでこれが引っかかったかというと…どうやら、全角スペースと勘違いされて処理されてるらしいんですね。
「@」は日本語のSJISの全角スペースの2バイト目にも使われるそうで。
禁止ワードに「@」を指定した結果、エンコーディング時に全角スペースと誤訳されて、文章中に含まれていた全角スペースが禁止ワード扱いにされた…と、多分そういう事なんだと思います。
もうちょい詳しく書きますと…。
全角スペースは、SJISで「8140」
@は、SJISで「40」
で、
1.投稿文の中の全角スペースがSJISで「8140」にコーディングされる
2.禁止ワードの@がSJISで「40」にコーディングされる
3.禁止ワードの条件分岐で「8140」の中に「40」が含まれていると判定され、禁止ワードエラー
…という具合なんだと、勝手に解釈しときます(^^;)
あと「@」は、掲示板等を作るプログラム言語「Perl」でも使われる特殊文字で、表を構成する「配列」を表記する場合にも、配列名の先頭に「@」をつけます。
どのみちプログラム上で問題を起こしやすいワードだったわけです。
宣伝広告を防ぐ点では成功したと言えるんですが…これでは書き込みに支障が出ますので、一旦「@」を外しました。
「@」だけエラーになるいい方法が思いついたら、また調整してみます。
書いてはみたものの、忘れてログに消えそうだなぁ…orz
