mb_internal_encoding('UTF-8')
sam nic nie robi, ustawia tylko domyślny parametr kodowania dla każdegomb_
funkcjonować. Jeśli nie używasz żadnegomb_
funkcja, to nie ma żadnego znaczenia. Jeśli tak, warto to ustawić, aby nie trzeba było przekazywać$encoding
parametr za każdym razem indywidualnie.- IMO
mb_detect_encoding
jest w większości bezużyteczny, ponieważ zasadniczo niemożliwe jest dokładne wykrycie kodowania nieznanego tekstu. Powinieneś albo wiedzieć, w jakim kodowaniu jest blob tekstu, ponieważ masz na ten temat specyfikację, albo musisz przeanalizować odpowiednie metadane, takie jak nagłówki lub metatagi, w których określone jest kodowanie. - Korzystanie z
mb_check_encoding
sprawdzenie, czy blob tekstu jest prawidłowy w kodowaniu, w którym oczekujesz, że się znajduje, jest zwykle wystarczające. Jeśli tak nie jest, odrzuć go i wyrzuć odpowiedni błąd. -
Odnośnie:
Jeśli manipulujesz ciągami zawierającymi znaki wielobajtowe, to tak, musisz użyć
mb_
funkcje, aby uniknąć uzyskania błędnych wyników. Podstawowe funkcje ciągów działają tylko na poziomie bajtów, a nie na poziomie znaków, czego zwykle potrzebujesz podczas pracy z ciągami. utf8_general_ci
w porównaniu zutf8_bin
ma znaczenie tylko wtedy, gdy zestawianie , czyli sortowanie i porównywanie ciągów. Zutf8_bin
dane są traktowane w postaci binarnej, tzn. tylko identyczne dane są identyczne. Zutf8_general_ci
stosuje się pewną logikę, m.in. "é" sortuje się razem z "e", a wielkie litery są uważane za takie same jak małe.