sql >> Databasteknik >  >> RDS >> Mysql

UTF8 arbetsflöde PHP, MySQL sammanfattat

  • mb_internal_encoding('UTF-8') gör ingenting av sig själv, den ställer bara in standardkodningsparametern för varje mb_ fungera. Om du inte använder någon mb_ 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 kontra utf8_bin gör bara skillnad när du sorterar , dvs sortera och jämföra strängar. Med utf8_bin data behandlas i binär form, dvs endast identisk data är identisk. Med utf8_general_ci viss logik tillämpas, t.ex. "é" sorterar tillsammans med "e" och versaler anses lika med gemener.


  1. Slå samman en tabell och en ändringslogg till en vy i PostgreSQL

  2. Hur man definierar en anpassad ORDER BY order i mySQL

  3. SELECT * FROM tbl WHERE clm LIKE CONCAT('%',<other sql-query LIMIT 1>,'%') - HUR?

  4. Bättre PHP, MySql, HTML och JavaScript IDE