Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Problem z kodowaniem znaków w PHP Simple HTML DOM Parser

@deceze i @Shakti dziękujemy za pomoc.

+1 dla linku do artykułu opublikowanego przez deceze (Obsługa Unicode od początku do końca w aplikacji internetowej ) i warto też przeczytać Zrozumienie kodowania

Po przeczytaniu twoich komentarzy, odpowiedzi i oczywiście tych dwóch artykułów, w końcu rozwiązałem mój problem.

Wymieniłem kroki, które wykonałem do tej pory, aby rozwiązać ten problem:

  1. Dodano header('Content-Type: text/html; charset=utf-8'); na górze mojego pliku init.php,
  2. Zmieniono ZESTAW ZNAKÓW mojego pola tabeli bazy danych, które przechowuje te wartości na UTF-8,
  3. Ustaw zestaw znaków połączenia MySQL na UTF-8 mysql_set_charset('utf8', $connection_link_id);
  4. Użyto funkcji htmlentities() do konwersji znaków $meta_title = htmlentities(trim($meta_title_raw), ENT_QUOTES, 'UTF-8');

Teraz wydaje się, że problem został rozwiązany, ALE nadal muszę wykonać następujące czynności, aby rozwiązać ten problem w PEŁNI.

  1. Pobierz zakodowany zestaw znaków ze źródła $source_charset .
  2. Zmień kodowanie ciągu na UTF-8, jeśli nie jest już w tym samym kodowaniu. W tym celu jedyną dostępną funkcją PHP jest iconv() . Przykład:iconv($source_charset, "UTF-8", $meta_title_raw);

Aby uzyskać $source_charset Prawdopodobnie muszę użyć kilku sztuczek lub wielokrotnego sprawdzania. Jak sprawdzanie nagłówków i metatagów itp. Znalazłem dobrą odpowiedź na Wykryj kodowanie

Daj mi znać, jeśli są jakieś ulepszenia lub jakieś błędy w moich powyższych krokach.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zmienić rozmiar kolumny w MySQL?

  2. Problem z blokadą demona MySQL

  3. Jak przechowywać dziesiętny w MySQL?

  4. SET zmienną w instrukcji SELECT - MySQL

  5. MariaDB 10 CentOS 7 przenoszenie danych katalog nieszczęść