現在、英語、ロシア語、ウクライナ語の入力を受け付けるWebサイトで作業しています。PHP文字列でunicodeが見つかりません
ユーザーは、商標記号(™)、日本語文字(の)、ドイツ語の文字(Ö)などの文字を使用してフォームを送信することがよくあります。大丈夫ですが、時には彼らはどこからこれらの文字をコピー&ペーストするとき、彼らは(0xD8000xDC00)、(0xFFFD)、(0x17の)のような入力を提出
、¿(0xbfの)、½(0xBD)、およびï(0xEF)(ちなみに値は0x457のウクライナ文字 'ї'があります)。
その後、その入力がUTF-8 XMLに変換されているとき、それは 、このエラーがスローされます "入力がない適切なUTF-8で、エンコーディングを指定バイト数:!0x17の0xEFという0xbfの0xBD、ライン13330、コラム27" 。
ユーザー入力でこれらの「壊れた」文字を検証する方法はありますか?
すべての文字を入力文字列からHEX値に変換し、すべての不正なHEX値を含む配列と比較することを考えていました。しかし、このアプローチでは、問題は「壊れた」文字の可能なコードをすべて知ることではないということです。私は0xEF 0xBF 0xBDが頻繁に出現することを知っていますが、そこにはさらに何があるかわかりません。
提案がありますか?
[文字列からUTF8以外の文字を削除](http://stackoverflow.com/questions/1401317/remove-nonの可能性のある重複-utf8-characters-from-string) – iainn