Обеспечение действительного utf-8 в PHP
Я использую PHP для обработки текста из различных источников. Я не ожидаю, что это будет что-то кроме UTF-8, ISO-8859-1 или, возможно, WINDOWS-1252. Если это что-то отличное от одного из них, мне просто нужно убедиться, что текст превращается в правильную строку UTF-8, даже если символы потеряны. Решает ли это опция // TRANSLIT для iconv? Например, будет ли этот код обеспечивать безопасную вставку строки в документ (или базу данных) в кодировке UTF-8?
function make_safe_for_utf8_use($string) {
$encoding = mb_detect_encoding($string, "UTF-8,ISO-8859-1,WINDOWS-1252");
if ($encoding != 'UTF-8') {
return iconv($encoding, 'UTF-8//TRANSLIT', $string);
} else {
return $string;
}
}