Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][Mysql] Kodowanie polskich znaków
Forum PHP.pl > Forum > Przedszkole
editorial
Witam,

Problem kodowania polskich znaków jest bardzo popularny. Prześledziłem wątki i mniej więcej rozumiem to w ten sposób że kodowanie strony i kodowanie bazy musi się zgadzać tzn.

strona kodowanie iso-8859-2
baza danych MySQL: kodowanie latin_2_general_ci

W mojej sytuacji tak właśnie jest czyli te dwa kodowania znaków się zgadzają. Problem pojawia się w bardzo specyficznej sytuacji ze specyficznym skryptem tj. ArticleMS. ArticleMS jest CMS-em bazą artykułów. Kodowanie strony zmieniłem na polskie i teraz kiedy dodaję sobie nowy artykuł (podobnie jak w każdej bazie stron) wszystko jest ok. Wszystko jest również ok z wyświetlaniem na stronie. Problem pojawia się kiedy artykuł chcę edytować bo wtedy pojawiają sie krzaczory. Krzaczorów nie ma w bazie bo sprawdzałem phpmyadmin i pokazuje normalnie polskie znaki. A więc dzieje się to w momencie powtórnego zapytania do bazy ale tylko przy edycji bo przy wyświetlaniu jest ok.

Aha po zapytaniu SHOW VARIABLES LIKE "character_set%";
character_set_client utf8
character_set_connection utf8
character_set_database latin2
character_set_server latin2

Rozumiem że chodzi o wstawienie tych linii
  1. <?php
  2. mysql_query('SET character_set_connection=latin2', $this->connection_id);
  3. mysql_query('SET character_set_client=latin2', $this->connection_id);
  4. mysql_query('SET character_set_results=latin2', $this->connection_id);
  5. mysql_query("set names latin2;");
  6. ?>

Tylko w którym miejscu. Domyślam się że w pliku db_mysql.php. Poniżej kawałek tego pliku. Ja wtawiłem linie po
  1. <?php
  2. $this->connection = @mysql_connect("$db_host:$db_port" . (!$this->socket ? '' : ":$db_socket"), $db_user, $db_pass);
  3. ?>



  1. <?php
  2. function database($db_host, $db_user, $db_pass, $db_name, $db_port = 3306, $db_socket = ''){
  3.  
  4. $this->get = $_GET;
  5. $this->post  = $_POST;
  6. $this->host  = $db_host;
  7. $this->user  = $db_user;
  8. $this->pass  = $db_pass;
  9. $this->db  = $db_name;
  10. $this->port  = $db_port;
  11. $this->socket = $db_socket;
  12.  
  13. $this->connection = @mysql_connect("$db_host:$db_port" . (!$this->socket ? '' : ":$db_socket"), $db_user, $db_pass);
  14. [b]mysql_query('SET character_set_connection=latin2', $this->connection);
  15. mysql_query('SET character_set_client=latin2', $this->connection);
  16. mysql_query('SET character_set_results=latin2', $this->connection);
  17. mysql_query("set names latin2;");[/b]
  18. if (!@mysql_select_db($db_name, $this->connection)) {
  19. $this->connection = false;
  20. ?>


Przepraszam jeśli to jest nieprawidłowo ale jestem w sumie laikiem jeśli chodzi o php.
Czy ktoś mógłby pomóc w tej sytaucji?

Pozdrawiam,
Radek
tom3kr
może rozwiązał ktoś ten problem?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.