私は別の答えに便利な機能を見つけました。誰かがそれが何をしているのか、それが信頼できるものかを私に説明することができるのだろうかと思います。私はmb_detect_encoding()を使用していましたが、Linux OS上のISO8859-1ファイルから読み込むときには書き込まれませんでした。PHPでのUTF8文字列のテストは、これは信頼できる方法ですか?
この機能は、私がテストしたすべてのケースで機能するようです。ここで
は疑問である:ここではGet file encoding
は関数である。
function isUTF8($string){
return preg_match('%(?:
[\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
|\xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
|\xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
|\xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
|[\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
|\xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)+%xs', $string);
}
これはUTF8文字列を検出するための信頼できる方法はありますか? 正確には何をしていますか? より堅牢にすることはできますか?
:ここ
は文字列がUTF-8である場合を教えてくれる元、正しく動作して(私がテストしてみた)関数です.net/manual/en/function.mb-detect-encoding.php)? – summea
この関数は "1"の文字列はutf8ではないと考えていることを言いたいと思いますが(明示的にはasciiですが、まだutf8に組み込む必要があります) – zerkms
@summeaすべて? –