Używam tabel mysql zestawu znaków utf8 na serwerze mysql 5.1, który nie obsługuje kodowania utf8mb4 w tabelach. Podczas wstawiania 4-bajtowych zakodowanych znaków utf8, takich jak "","","","","","唧",""
. Tabela wyświetli komunikat o błędzie lub pominie następujące teksty.Czy php wykrywa 4-bajtowe kodowane znaki utf8?
Jak mogę programowo wykryć 4-bajtowe kodowane znaki utf8 w PHP i zamienić je?
Dość prosta: podzielić ciąg znaków (przez wiele sposobów, aby to zrobić) i sprawdzić, czy 'strlen ($ char) == 4'. Nie jestem pewien, czy jest to naprawdę poprawny sposób wykrywania znaków, których MySQL nie może obsłużyć, przejście przez punkt kodowy może być dokładniejsze. – deceze
Czy sprawdziłeś rozszerzenie [wielobajtowe] (http://php.net/mbstring)? Pamiętaj też, aby zawsze [czytać komentarze] (http://dk1.php.net/manual/en/function.mb-internal-encoding.php#66568). –
@deceze To podejście. Pójdę na to, jeśli nie ma innych eleganckich sposobów. –