私は自家製のUTF-8/UTF-16のデコード機能を(&番号NUMBERに変換、表現)を使用して巻き取る、私は任意のパターンを発見していませんUTF-8が検出されない理由は、 "encoded-as"シーケンスが返される文字列内の常に同じ位置にあるとは限りませんからです。あなたはそれについていくつかの追加チェックをするかもしれません。
3文字のUTF-8インジケータ:$ startutf8 = chr(0xEF).chr(187).chr(191); (最初の3文字だけでなく、この文字列が表示されていれば、その文字列はUTF-8でエンコードされます)
UTF-8ルールに従ってデコードします。あなたは、これらのデータ'Praha 5, Staré Město,'
からを取得した場合、その後も、必要は、utf8_decode
を使用しないように、あなたのPHPファイルのエンコーディングでは、UTF-8
エンコーディングでファイルを保存している
function charset_decode_utf_8 ($string) {
/* Only do the slow convert if there are 8-bit characters */
/* avoid using 0xA0 (\240) in ereg ranges. RH73 does not like that */
if (! ereg("[\200-\237]", $string) and ! ereg("[\241-\377]", $string))
return $string;
// decode three byte unicode characters
$string = preg_replace("/([\340-\357])([\200-\277])([\200-\277])/e",
"'&#'.((ord('\\1')-224)*4096 + (ord('\\2')-128)*64 + (ord('\\3')-128)).';'",
$string);
// decode two byte unicode characters
$string = preg_replace("/([\300-\337])([\200-\277])/e",
"'&#'.((ord('\\1')-192)*64+(ord('\\2')-128)).';'",
$string);
return $string;
}
utf8_decodeは、UTF-8でエンコードされた文字列を変換するだけです。文字列はutf8_encodedですか? –