mb_detect_encoding wykrywa ASCII jako UTF-8?
Próbuję automatycznie przekonwertować importowane metadane IPTC z obrazów na UTF-8 w celu przechowywania w bazie danych opartej na PHPmb_
Funkcje.
Obecnie wygląda to tak:
$val = mb_convert_encoding($val, 'UTF-8', mb_detect_encoding($val));
Jednak kiedymb_detect_encoding()
dostarczany jest ciąg ASCII (znaki specjalne w polach Latin1 od 192-255), który wykrywa go jako UTF-8, stąd w następnej próbie konwersji wszystkiego na właściwy UTF-8 usuwane są wszystkie znaki specjalne.
Próbowałem napisać własną metodę, szukając wartości Latin1 i jeśli żadna z nich się nie pojawiła, pozwoliłbymmb_detect_encoding
zdecyduj, co to jest. Ale zatrzymałem się w połowie, kiedy zdałem sobie sprawę, że nie mogę być pewien, że inne kodowanie nie używa tych samych wartości bajtów dla innych rzeczy.
Czy istnieje sposób na prawidłowe wykrycie ASCII do kanałumb_convert_encoding
jako kodowanie źródłowe?