mb_internal_encoding('UTF-8')
gör ingenting av sig själv, den ställer bara in standardkodningsparametern för varjemb_
fungera. Om du inte använder någonmb_
funktion, det gör ingen skillnad. Om du är det är det vettigt att ställa in det så att du inte behöver passera$encoding
parameter varje gång individuellt.- IMO
mb_detect_encoding
är för det mesta värdelös eftersom det är i grunden omöjligt att exakt detektera kodningen av okänd text. Du bör antingen veta vilken kodning en textklump finns i eftersom du har en specifikation om den, eller så måste du analysera lämplig metadata som rubriker eller metataggar där kodningen är specificerad. - Med
mb_check_encoding
att kontrollera om en textklump är giltig i den kodning du förväntar dig att den ska vara i är vanligtvis tillräckligt. Om det inte är det, kassera det och skicka ett lämpligt fel. -
Angående:
Om du manipulerar strängar som innehåller multibyte-tecken, ja, du måste använda
mb_
funktioner för att undvika att få fel resultat. Kärnsträngsfunktionerna fungerar bara på en bytenivå, inte en teckennivå, vilket är vad du vanligtvis vill ha när du arbetar med strängar. utf8_general_ci
kontrautf8_bin
gör bara skillnad när du sorterar , dvs sortera och jämföra strängar. Medutf8_bin
data behandlas i binär form, dvs endast identisk data är identisk. Medutf8_general_ci
viss logik tillämpas, t.ex. "é" sorterar tillsammans med "e" och versaler anses lika med gemener.