mb_internal_encoding('UTF-8')
nedělá nic samo o sobě, pouze nastavuje výchozí parametr kódování pro každýmb_
funkce. Pokud nepoužíváte žádnémb_
funkce, na tom není žádný rozdíl. Pokud ano, má smysl to nastavit, abyste nemuseli předávat$encoding
parametr pokaždé jednotlivě.- IMO
mb_detect_encoding
je většinou k ničemu, protože je v zásadě nemožné přesně detekovat kódování neznámého textu. Měli byste buď vědět, v jakém kódování je blob textu, protože o něm máte specifikaci, nebo musíte analyzovat vhodná metadata, jako jsou záhlaví nebo meta tagy, kde je kódování specifikováno. - Pomocí
mb_check_encoding
Chcete-li zkontrolovat, zda je blob textu platný v kódování, ve kterém očekáváte, že bude, je obvykle dostačující. Pokud tomu tak není, zahoďte jej a vyvolejte příslušnou chybu. -
O:
Pokud manipulujete s řetězci, které obsahují vícebajtové znaky, pak ano, musíte použít
mb_
funkce, aby nedocházelo ke špatným výsledkům. Funkce základních řetězců fungují pouze na úrovni bajtů, nikoli na úrovni znaků, což je to, co obvykle chcete při práci s řetězci. utf8_general_ci
vs.utf8_bin
rozdíl je pouze při skládání , tedy řazení a porovnávání řetězců. Pomocíutf8_bin
data jsou zpracována v binární podobě, tj. identická jsou pouze identická data. Pomocíutf8_general_ci
uplatňuje se nějaká logika, např. „é“ se řadí společně s „e“ a velká písmena jsou považována za stejná jako malá.