sql >> Databáze >  >> RDS >> Mysql

Workflow UTF8 PHP, MySQL shrnuto

  • 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á.


  1. MySQL UPDATE přidá data do sloupce

  2. Zjistěte, na který oddíl by byla daná hodnota namapována v SQL Server (T-SQL)

  3. unbuffered dotaz s MySQLi?

  4. Převod Varchar na číslo pro řazení