として特殊記号から保護するためにどのように上の写真の文字はMikko Hyppönen、コンピュータウイルスやコンピュータのセキュリティ上のTED talks上の彼の仕事のために知られているコンピュータセキュリティの専門家で数ヶ月前につぶやきました。私はそれをイメージしていますが、あなたはそのアイデアを得ています。明らかにあなたのウェブサイトの周りに広がり、訪問者を驚かせたいとは思わないものです。
さらに検査すると、文字はタイ語のアルファベットの87個以上の発音区別記号と組み合わせて表示されます(制限はありますか?)。これはセキュリティ、ローカリゼーション、そしてこのような入力をどのように処理するかを考えてくれました。私の検索でStackにthis question、マイケル・カプランのブログ投稿はstripping diacriticsになりました。その中で、彼は1つが(簡潔にするためにここに簡略化)その「基盤」の文字に文字列を分解することができる方法を示しています。
StringBuilder sb = new StringBuilder();
foreach (char c in "façade".Normalize(NormalizationForm.FormD))
{
if (char.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark)
sb.Append(c);
}
Response.Write(sb.ToString()); // facade
私はこれがあることが、いくつかの例において有用であるが、中にする方法を見ることができますユーザーの入力の条件は、すべての発音区別記号を削除します。 Kaplanが指摘しているように、一部の言語で発音区別記号を削除すると、単語の意味が完全に変更される可能性があります。これは疑問を招きます:ユーザの入力/出力にいくつかの発音区別符号を許可しますが、Mikko Hypponnenのような極端なケースを除外する方法はありますか?
静的クラス/ユーティリティクラスを使用してホワイトリストを作成しますか?そして、それはプログラマーに行く価値がある.stackexchange.com。 –
@MonsterTruck、十分に公正だが、ホワイトリストは正確に何か?これらは、私が話しているUnicode文字です。 –
基本文字ごとに最大発音数を設定できます。ベトナムとギリシャ人はまだ大丈夫ですが、非常識なケースを拒否するのに十分なほど高い値を選んでください。 –