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

Problém s kódováním znaků u PHP Simple HTML DOM Parser

@deceze a @Shakti děkuji za vaši pomoc.

+1 za odkaz na článek zveřejněný decezem (Zpracování Unicode zepředu dozadu ve webové aplikaci ) a také stojí za přečtení Porozumění kódování

Po přečtení vašich komentářů, odpovědí a samozřejmě těchto dvou článků jsem svůj problém konečně vyřešil.

Uvedl jsem kroky, které jsem dosud provedl k vyřešení tohoto problému:

  1. Přidáno header('Content-Type: text/html; charset=utf-8'); v horní části mého souboru init.php,
  2. Změněna ZNAKOVÁ SADA pole mé databázové tabulky, které ukládá tyto hodnoty do UTF-8,
  3. Nastavte znakovou sadu připojení MySQL na UTF-8 mysql_set_charset('utf8', $connection_link_id);
  4. K převodu znaků byla použita funkce htmlentities() $meta_title = htmlentities(trim($meta_title_raw), ENT_QUOTES, 'UTF-8');

Nyní se zdá, že je problém vyřešen, ALE stále musím udělat následující věc, abych tento problém vyřešil PLNĚ.

  1. Získejte kódovanou znakovou sadu ze zdroje $source_charset .
  2. Změňte kódování řetězce na UTF-8, pokud již není ve stejném kódování. Za tímto účelem je jedinou dostupnou funkcí PHP iconv() . Příklad:iconv($source_charset, "UTF-8", $meta_title_raw);

Za získání $source_charset Asi budu muset použít nějaké triky nebo vícenásobnou kontrolu. Jako kontrola záhlaví a metaznaček atd. Dobrou odpověď jsem našel na adrese Zjistit kódování

Dejte mi vědět, zda došlo k nějakému vylepšení nebo nějaké chybě v mých výše uvedených krocích.



  1. Jsou v databázi přijatelné kruhové odkazy?

  2. Duplicitní záznam „0“ pro klíč „PRIMARY“

  3. Objeví se arabština v php/mysql ???? otazníky v html

  4. Jak mohu vložit data do databáze MySQL?