Zapewnienie poprawnego utf-8 w PHP
Używam PHP do obsługi tekstu z różnych źródeł. Nie przewiduję, że będzie to coś innego niż UTF-8, ISO-8859-1, a może WINDOWS-1252. Jeśli jest to coś innego niż jeden, po prostu muszę się upewnić, że tekst zostanie przekształcony w prawidłowy ciąg UTF-8, nawet jeśli znaki zostaną utracone. Czy opcja // TRANSLIT iconv rozwiązuje ten problem? Na przykład, czy ten kod zapewni, że łańcuch będzie bezpieczny do wstawienia do dokumentu zakodowanego w UTF-8 (lub bazy danych)?
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;
}
}