© 2005-2012 eXtreme-Fusion (based on PHP-Fusion) 18 lutego odbędzie się konferencja Skype - ogłosimy datę premiery eXtreme-Fusion 5. Zapisy (zostało 11 miejsc) przez maila - support[at]extreme-fusion.pl

 Reklama
Joi.pl - Z hostingu możesz wycisnšć więcej!
eX-Chat
 Logowanie
Login

Hasło

Zapamiętaj mnie



Rejestracja
Zapomniane hasło?
 Przydatne linki

eXtreme-fusion UK Support

Download EF 4.17 (stable)

Download EF 4.5 (closed)

eXtreme-Fusion 5 (info)

 Ostatnio widziani

 seba112OnLine
 admiks00:35:07
 Wolfram00:41:18
 LynX00:52:55
 wolffmrau01:01:26
 Andrzejster01:01:31
 FoxNET01:21:34
 bubutm01:31:33
 zerono01:44:34
 shouichi02:04:44
 michalz2102:50:35
 wojownik2403:01:30

Zarejestrowanych: 39,509
Gości on-line: 19

 Polecamy


Mapa witryny

Joi.pl - Profesjonalny hosting WWW
 Zobacz Temat
Centrum eXtreme-Fusion CMS, support extreme fusion, wtyczki, infusions, themes | FAQ | EF 4.0
Naprawa krzaczków - Polskie znaki - [Tut] || Dodane dnia 03-12-2009 21:21
Avatar Użytkownika

Rafik89
Administrator


Witam, mając już małe doświadczenie z kodowaniem znaków na stronach, postanowiłem poświęcić i opisać dla potomnych co należy wykonać aby przywrócić na stronie polskie znaki. Często i gęsto powstałe krzaki na stronie wiążą się z różnymi kodowaniami baz danych(teraz utf8, wcześniej latin1, latin2).
Wykonując migrację z PF<=>EF czy przeniesienie strony na inny host, borykamy się z problemami. A to nie ma polskich znaków a to są po części. Opiszę prosto na przykładach:
Można po:
1.) Migrować z strony opartej o EF4 do PF7, paczka UTF-8.
2.) Migrować z strony opartej o EF4 do PF7, paczka ISO.
3.) Migrować z strony opartej o PF6 do EF4.
4.) Przenosić host.
- Po udanej migracji/przeniesieniu widzimy a raczej nie widzimy często polskich znaków, w takim wypadku musimy dowiedzieć się w jakim kodowaniu przechowywane są dane w naszej nowej bazie danych.
Nie będziemy musieli konwertować całej bazy danych wystarczy tylko w pliku maincore.php dodać do funkcji:
function dbconnect($db_host, $db_user, $db_pass, $db_name) {
  $db_connect = @mysql_connect($db_host, $db_user, $db_pass);
  $db_select = @mysql_select_db($db_name);
  if (!$db_connect) {
   die("<div style='font-family:Verdana;font-size:11px;text-align:center;'><b>Unable to establish connection to MySQL</b><br>".mysql_errno()." : ".mysql_error()."</div>");
  } elseif (!$db_select) {
   die("<div style='font-family:Verdana;font-size:11px;text-align:center;'><b>Unable to select MySQL database</b><br>".mysql_errno()." : ".mysql_error()."</div>");
  }
}
(Która dla wszystkich fusionopochodnych jest taka sama).
Jedno zapytanie
dbquery("SET NAMES utf8");

Gdzie zamiast utf8 może być również latin1 bądź latin2(zależne od kodowania bazy danych).
Cała funkcja dla kodowania utf8 powinna wyglądać tak:
function dbconnect($db_host, $db_user, $db_pass, $db_name) {
  $db_connect = @mysql_connect($db_host, $db_user, $db_pass);
  $db_select = @mysql_select_db($db_name);
  dbquery("SET NAMES utf8");
  if (!$db_connect) {
   die("<div style='font-family:Verdana;font-size:11px;text-align:center;'><b>Unable to establish connection to MySQL</b><br />".mysql_errno()." : ".mysql_error()."</div>");
  } elseif (!$db_select) {
   die("<div style='font-family:Verdana;font-size:11px;text-align:center;'><b>Unable to select MySQL database</b><br />".mysql_errno()." : ".mysql_error()."</div>");
  }
}


Dla przykładu przy migracji z EF4 do PF7 i ustawionego System kodowania znaków dla MySQL: UTF-8 Unicode (utf8) właśnie wartość SET NAMES to UTF8.
Analogicznie postępujemy w przypadkach przeniesienia strony na inny host, bądź też upgrade.
Jeśli nie mamy pojęcia jakie kodowanie mamy użyte należy wówczas intuicyjnie zmieniać latin1, utf8, latin2.
Od razu dopowiem, że na stronie znaki mogą powrócić lecz w Panelu Administracyjnym znaki ulegną popsuciu, tam już ręcznie należy zmienić dane w bazie danych. Kiedyś było takie zapytanie lecz gdzieś w otchłani internetu zginęło...

Powinno się przydać, myślę, że błędów nie popełniłem w wytłumaczeniu.
Pozdrawiam
http://rafik.eu Wyślij Prywatną Wiadomość   
RE: Naprawa krzaczków - Polskie znaki - [Tut] || Dodane dnia 24-04-2011 20:29
Avatar Użytkownika

Darek
Moderator


Jako, iż wiele osób ciągle ma jakieś problemy z "polskimi znakami na stronie", dopisuje tutaj jeszcze jedne sposób w którym opiszę krok po kroku (bazując na wypowiedzi wlodekp z Polskiego Supportu PF) jak wykonać prosty zabieg który w 90% przypadku naprawia ten "problem".

Właściwie w czym leży problem?
Odpowiedź jest prosta - w kodowaniu bazy.

Jak temu zapobiec ?
To również jest proste, wystarczy w pliku maincore.php po linii ~45:

$link = dbconnect($db_host, $db_user, $db_pass, $db_name);


dopisać:

dbquery("SET NAMES latin2"); 


Teraz każda nowo dodana rzecz będzie już zawierała nasze polskie kochane znaki :) Całą resztę wykonaną PRZED tą "operacją" należy edytować ręcznie z poziomu PHPMYADMIN. Na nasze szczęście kodowanie LATIN2 wyświetla polskie znaki w tabelach bazy, więc wystarczy odpowiedni kod w DODATKOWYCH STRONACH:


<?php

//Admin
$result = dbquery("UPDATE ".$db_prefix."admin SET admin_title='Kategorie Artykułów' WHERE admin_id=2");
$result = dbquery("UPDATE ".$db_prefix."admin SET admin_title='Artykuły' WHERE admin_id=3");
$result = dbquery("UPDATE ".$db_prefix."admin SET admin_title='Zarz±dzanie Grafikami' WHERE admin_id=12");
$result = dbquery("UPDATE ".$db_prefix."admin SET admin_title='Zarz±dzanie wtyczkami Infusion' WHERE admin_id=13");
$result = dbquery("UPDATE ".$db_prefix."admin SET admin_title='Użytkownicy' WHERE admin_id=15");
$result = dbquery("UPDATE ".$db_prefix."admin SET admin_title='Zarz±dzanie Panelami' WHERE admin_id=18");
$result = dbquery("UPDATE ".$db_prefix."admin SET admin_title='Albumy zdjęć' WHERE admin_id=19");
$result = dbquery("UPDATE ".$db_prefix."admin SET admin_title='Nadesłane Materiały' WHERE admin_id=24");
$result = dbquery("UPDATE ".$db_prefix."admin SET admin_title='Grupy Użytkowników' WHERE admin_id=26");
$result = dbquery("UPDATE ".$db_prefix."admin SET admin_title='Główne Ustawienia' WHERE admin_id=29");
$result = dbquery("UPDATE ".$db_prefix."admin SET admin_title='Ustawienia Różne' WHERE admin_id=34");
$result = dbquery("UPDATE ".$db_prefix."admin SET admin_title='Ustawienia Prywatnych Wiadomo¶ci' WHERE admin_id=35");

//Panels
$result = dbquery("UPDATE ".$db_prefix."panels SET panel_name='Użytkownicy Online' WHERE panel_id=2");
$result = dbquery("UPDATE ".$db_prefix."panels SET panel_name='Ostatnie Artykuły' WHERE panel_id=4");
$result = dbquery("UPDATE ".$db_prefix."panels SET panel_name='Wiadomo¶ć Powitalna' WHERE panel_id=5");
$result = dbquery("UPDATE ".$db_prefix."panels SET panel_name='Dane Użytkownika' WHERE panel_id=7");

//Site Links
$result = dbquery("UPDATE ".$db_prefix."site_links SET link_name='Strona Główna' WHERE link_id=1");
$result = dbquery("UPDATE ".$db_prefix."site_links SET link_name='Artykuły' WHERE link_id=2");
$result = dbquery("UPDATE ".$db_prefix."site_links SET link_name='Dodaj Artykuł' WHERE link_id=14");
$result = dbquery("UPDATE ".$db_prefix."site_links SET link_name='Dodaj zdjęcie' WHERE link_id=15");
?>


UWAGA: Teraz klikamy PODGLĄD nie ZAPISZ...
http:// Wyślij Prywatną Wiadomość   
 Szybka Odpowiedź

Temat został zablokowany bądź nie zaakceptowałeś jeszcze regulaminu dostępnego TUTAJ