mb_internal_encoding('UTF-8')не прави нищо само по себе си, задава само параметъра за кодиране по подразбиране за всекиmb_функция. Ако не използватеmb_функция, няма никаква разлика. Ако сте, има смисъл да го зададете, така че да не се налага да предавате$encodingпараметър всеки път поотделно.- IMO
mb_detect_encodingе предимно безполезен, тъй като е принципно невъзможно да се открие точно кодирането на неизвестен текст. Трябва или да знаете в какво кодиране се намира блоб текст, защото имате спецификация за него, или трябва да анализирате подходящи мета данни, като заглавки или мета маркери, където е посочено кодирането. - Използване на
mb_check_encodingза да проверите дали петно от текст е валидно в кодирането, в което очаквате да бъде, обикновено е достатъчно. Ако не е, изхвърлете го и изведете подходяща грешка. -
Относно:
Ако манипулирате низове, които съдържат многобайтови знаци, тогава да, трябва да използвате
mb_функции, за да се избегне получаването на грешни резултати. Функциите на основния низ работят само на ниво байт, а не на ниво символ, което обикновено искате, когато работите с низове. utf8_general_ciсрещуutf8_binима разлика само при събиране , т.е. сортиране и сравняване на низове. Сutf8_binданните се третират в двоична форма, т.е. само идентични данни са идентични. Сutf8_general_ciсе прилага някаква логика, напр. "é" сортира заедно с "e" и главните букви се считат за равни на малки.