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?

questionAnswers(3)

yourAnswerToTheQuestion