| Autor |
Wiadomość |
Rogo
~user

Dołączył(a): 27.02.2006
Posty: 14
Skąd: Świdnica
Status: Offline
|
Wysłany: 11 Mar 2006 15:00:02
|
|
UA: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1 |
Sorki za męczenie tego tematu ale nie bardzo wiem jak zastosowac się do tego rozwiązania z tej stronki http://phpnuke.org.pl/modules.php?name=FAQ&id=634
wykonalem w phpMyAdminie zapytanie
SHOW VARIABLES LIKE "character_set%";
otrzymałem
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_results utf8
character_set_server latin2
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
no i teraz gdzie co mam zmienic żeby na stronce nie bylo krzaków
na poprzednim serwerku mialem
character_set_client utf8
character_set_connection utf8
character_set_database latin1
character_set_results utf8
character_set_server latin1
character_set_system utf8
i wszystko dzialalo cacy a tutaj krzakologia jak sie patrzy, i probowalem baze exportowac na kilka sposobow i nic, o wpisach tez moge zapomniec co bym nie dodal czy newsa czy zmienil jakas nazwe to zamiast polskich jest krzak
nuke 7.7
|
|
|
|
|
|
|
 |
|
|
 |
chickens11
~user

Dołączył(a): 9.12.2005
Posty: 117
Pochwał: 6
Ostrzeżeń: 1
Skąd: Byczyna
Status: Offline
|
Wysłany: 13 Mar 2006 09:23:43
|
|
UA: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL; rv:1.7.10) Gecko/20050717 Firefox/1.0.6 |
| Kod: |
II. Krok drugi:
1) Jeżeli nasze tabele mają inny zestaw znaków niż domyślny, który odczytaliśmy z character_set_database, to musimy:
- wymusić łączenie się z takim charsetem, jaki ma tablica, dodając po połączeniu polecenie "SET NAMES 'latin1'", gdzie 'latin1', to zestaw znaków z naszych tabelach.
Jak to zrobić?
otwieramy plik includes/sql_layer.php
Szukamy
Kod:
function sql_connect($host, $user, $password, $db)
{
global $dbtype;
switch ($dbtype) {
case "MySQL":
$dbi=@mysql_connect($host, $user, $password);
mysql_select_db($db);
i dodajemy po:
Kod:
mysql_query("set names 'latin1'",$dbi);
Otwórz plik db/mysql.php
Znajdź
Kod:
mysql_connect($this->server, $this->user, $this->password);
}
if($this->db_connect_id)
{
if($database != "")
{
$this->dbname = $database;
$dbselect = @mysql_select_db($this->dbname);
dodaj po:
Kod:
mysql_query("set names 'latin1'",$this->db_connect_id);
Pamiętaj, że musisz zamienić latin1, na zestaw znaków, któy mają twoje tabele
- spróbować zmienić kodowanie w tablicy, tak aby serwer nie robił "automatycznej konwersji w locie".
Zmiana kodowania w tablicy - WAŻNE!
Ponieważ nasze znaki są w tabeli jako strona kodowa domyslnej tablicy znaków w naszej bazie danych, a tabela uważa, że są one w latin1, NIE WOLNO robić zwykłej konwersji charsetu na danym polu (przez ALTER TABLE - zmiana właściwości pola)!
Trzeba z każdym polem typu text lub varchar zrobić tak, jak to niżej napisali:
Kod:
If you have a column in one character set (like latin1) but the stored values actually use some other, incompatible character set (like utf8). In this case, you have to do the following for each such column:
ALTER TABLE t1 CHANGE c1 c1 BLOB;
ALTER TABLE t1 CHANGE c1 c1 TEXT CHARACTER SET utf8;
a w naszym przypadku, zamiast uft8, będzie domyślny zestaw znaków naszej bazy danych
Kod:
ALTER TABLE t1 CHANGE c1 c1 TEXT CHARACTER SET latin2;
dla pola VARCHAR będzie to:
Kod:
ALTER TABLE t1 CHANGE c1 c1 BLOB;
ALTER TABLE t1 CHANGE c1 c1 VARCHAR(255) CHARACTER SET latin2;
Uwaga: 'latin2' musisz zmienic na swoją domyślną tablicę znaków w twoim MySQL
III. Krok trzeci:
Jeśli nasz przypadek to:
1) baza ma domyślny zestaw znaków, np. 'latin2'
2) PHP-Nuke łączy się za pomocą innego zestawu znaków, np. 'latin1' , to:
otwieramy plik includes/sql_layer.php
Szukamy
Kod:
function sql_connect($host, $user, $password, $db)
{
global $dbtype;
switch ($dbtype) {
case "MySQL":
$dbi=@mysql_connect($host, $user, $password);
mysql_select_db($db);
i dodajemy po:
Kod:
mysql_query("set names 'latin2'",$dbi);
Otwórz plik db/mysql.php
Znajdź
Kod:
mysql_connect($this->server, $this->user, $this->password);
}
if($this->db_connect_id)
{
if($database != "")
{
$this->dbname = $database;
$dbselect = @mysql_select_db($this->dbname);
dodaj po:
Kod:
mysql_query("set names 'latin2'",$this->db_connect_id);
gdzie musimy 'latin2' zmienić na zestaw znaków naszej bazy dnaych
Przy opracowywaniu wykorzystałem http://www.zhr.pl/info/1657
UPDATE:
Alternatywną metoda działającą w niektórych przypadkach (zwłaszcza opisanej powyżej drugiej sytuacji) to konwersja standardu kodowania w pliku będącym zrzutem bazy danych.
Otóż przed wykonaniem zapytań z pliku sql należy zmienić kodowanie w tym pliku na zgodne z kodowaniem jaki poznaliśmy na początku tego FAQ. Dopiero potem załadować plik do bazy danych. Do konwersji standardu kodowania polecam darmowy, polski program o nazwie GżegżółkaXP. Najczęściej konwersja powinna być wykonana na któryś z tych 3 standardów:
- IBM CP852 (Europa Środkowa)
- ISO 8859-2 (Europa Środkowa)
- Windows 1250 (Europa Środkowa)
update by Suchy
*Jaszczur |
Poczytaj
|
|
|
_________________ Jeśli udało mi się Tobie pomóc, możesz się odwdzięczyć
odwiedzając moją stronę - www.eduklasa.ovh.org! |
|
|
|
 |
mtx
~user

Dołączył(a): 9.11.2005
Posty: 113
Skąd: K-ce
Status: Offline
|
Wysłany: 15 Mar 2006 14:49:56
|
|
UA: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; 354ACC22-4D77-5B09-ACF5-201191686861; .NET CLR 1. |
|
|
|
 |
kufel74
~user

Dołączył(a): 8.09.2005
Posty: 23
Skąd: Mysłowice
Status: Offline
|
Wysłany: 2 Cze 2006 09:48:40
|
|
UA: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322) |
Witam. Testuje serwis na new serwerze i mam z tym podobny problem.
Po zapytaniu:
Variable_name Value
character_set_client utf8
character_set_connection utf8
character_set_database latin2
character_set_results utf8
character_set_server latin2
character_set_system utf8
character_sets_dir /usr/local/mysql-standard-4.1.10-pc-linux-gnu-i686...
Więc zmieniam w kodzie:
plik includes/sql_layer.php
case "MySQL":
$dbi=@mysql_connect($host, $user, $password);
mysql_select_db($db);
mysql_query("set names 'latin2'",$dbi);
return $dbi;
break;;
plik db/mysql.php
$this->dbname = $database;
$dbselect = @mysql_select_db($this->dbname);
mysql_query("set names 'latin2'",$this->db_connect_id);
if(!$dbselect)
{
@mysql_close($this->db_connect_id);
$this->db_connect_id = $dbselect;
I bez zmian, albo zrobiłem gdzies błąd, albo trzeba zmienic kodowanie tablicy.
Niestety nie mam pojęcia jak i gdzie.
Można by tak łopatologicznie
Proszę o pomoc...
P.S. Dodam, że gdy w jednym z bloków zmieniłem ręcznie ? na prawidłowe znaki działa bez problemu. Można i tak, ale przy takiej ilości danych zajęłoby mi to diabli wiedzą ile a jakies lekarstwo musi być
|
|
|
|
|
|
|
 |
srwsio
~user

Dołączył(a): 4.05.2006
Posty: 510
Pochwał: 34
Skąd: Olsztyn
Status: Offline
|
Wysłany: 2 Cze 2006 13:29:51
|
|
UA: Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90) |
| kufel74 napisał(a): |
| P.S. Dodam, że gdy w jednym z bloków zmieniłem ręcznie ? na prawidłowe znaki działa bez problemu. Można i tak, ale przy takiej ilości danych zajęłoby mi to diabli wiedzą ile a jakies lekarstwo musi być |
Grzegżółka Twoim Przyjacielem
ps a gdzie ją znaleźć ???
www.GOOGLE.pl
|
|
|
_________________ SZUKAJ <--BEST FRIENDS--> GOOGLE
nie udzielam porad na gg, e-mail - piszesz na własne ryzyko
25% wykonania typera |
|
|
|
 |
kufel74
~user

Dołączył(a): 8.09.2005
Posty: 23
Skąd: Mysłowice
Status: Offline
|
Wysłany: 2 Cze 2006 14:03:35
|
|
UA: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322) |
Nie pytałem o w/w tylko:
1. Czy nie mam błedu w kodzie
2. Jak wykonać zmianę kodowania w tablicy
|
|
|
|
|
|
|
 |
kufel74
~user

Dołączył(a): 8.09.2005
Posty: 23
Skąd: Mysłowice
Status: Offline
|
Wysłany: 20 Lut 2007 19:37:37
|
|
UA: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) |
Powrót do tematu więc niezakładałem nowego topika.
Otóż:
character_set_client utf8
character_set_connection latin2
character_set_database latin2
character_set_results utf8
character_set_server latin2
character_set_system utf8
ale patrząc na tabele w bazie mam w kazdej jednej:
Collation - latin1_swedish_ci natomiast na dole pod tabelami w podsumowaniu: latin2_general_ci
Dlaczego tak i który krok zastosować i co wpisać latin1, latin2 czy utf
|
|
|
|
|
|
|
 |
Jaszczur
~user

Dołączył(a): 21.12.2004
Posty: 1137
Pochwał: 83
Skąd: Racibórz/Katowice
Status: Offline
|
Wysłany: 20 Lut 2007 19:49:49
|
|
UA: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1 |
character_set_database latin2 - tak są zapisane informacje w bazie
character_set_client utf8 - klient przerabia je na utf8
co z tego? BŁĄD!!!
musisz narzucić kodowanie latin2, więc takie wpisujesz
|
|
|
_________________ Nie udzielam porad via GG,PW, mail etc - o wszystko pytać na forum
www.tobiasz.org | www.phpnuke.com.pl |
|
|
|
 |
kufel74
~user

Dołączył(a): 8.09.2005
Posty: 23
Skąd: Mysłowice
Status: Offline
|
Wysłany: 20 Lut 2007 21:13:54
|
|
UA: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) |
Niestety nic nie pomogło. Jaszczur lub ktoś kto wie o co chodzi i może pomóc jakbyście znaleźli chwilkę i rzucili okiem. Bardzo mi zależy.
Muszę zmienić hosting bo poprzedni dostawca wywinął mi numer a nie mam pojęcia co jest. Kombinowałem na różne sposoby i nic.
Na poprzednim serwerze działało wszystko ok, ale niestety trzeba się było wynieść. Założyłem też konto testowe w home.pl wszystkie charsety są na latin2 i występuje to samo.
http://www.mws.netstrefa.pl i
http://www.mws.home.plbędę wdzięczny.
NUKE 7.5
Z góry dzięki
|
|
|
|
|
|
|
 |
Jaszczur
~user

Dołączył(a): 21.12.2004
Posty: 1137
Pochwał: 83
Skąd: Racibórz/Katowice
Status: Offline
|
Wysłany: 22 Lut 2007 15:18:30
|
|
UA: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1 |
|
|
|
 |
srwsio
~user

Dołączył(a): 4.05.2006
Posty: 510
Pochwał: 34
Skąd: Olsztyn
Status: Offline
|
Wysłany: 22 Lut 2007 16:27:03
|
|
UA: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322) |
DOpiszę tylko o wyczyszczeniu cookies i plików tymczasowych, gdyz jak wiadomo przeglądarka czyta najpierw to co na kompie a potem sprawdza czy isnieje nowsza wersja
|
|
|
_________________ SZUKAJ <--BEST FRIENDS--> GOOGLE
nie udzielam porad na gg, e-mail - piszesz na własne ryzyko
25% wykonania typera |
|
|
|
 |
kufel74
~user

Dołączył(a): 8.09.2005
Posty: 23
Skąd: Mysłowice
Status: Offline
|
Wysłany: 23 Lut 2007 09:13:50
|
|
UA: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) |
Tutaj tak ponieważ musiałem uruchomić serwis i część rzeczy przynajmniej te dostępne ze strony głównej zmieniłem ręcznie.
Próbowałem wszystkiego co jest dostępne na forum o plikach językowych, niestety pomogło tylko ręczne "wywalenie" krzaków.
I jeszcze nie wszystko gotowe w pozostałych podstronach serwisu.
Natomiast www.mws.home.pl sprawa wygląda nadal bez zmian. tu nic nie grzebałem
|
|
|
|
|
|
|
 |
Jaszczur
~user

Dołączył(a): 21.12.2004
Posty: 1137
Pochwał: 83
Skąd: Racibórz/Katowice
Status: Offline
|
Wysłany: 23 Lut 2007 09:54:16
|
|
UA: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1 |
| kufel74 napisał(a): |
| Natomiast www.mws.home.pl sprawa wygląda nadal bez zmian. tu nic nie grzebałem |
Bo prawdopodobnie odtwarzałeś z kopii bazy danych serwisu
http://www.mws.netstrefa.pl/, a tam było inne kodowanie w bazie danych i masz dziwne znaczki zmiast plliterek, ale nie znaki zapytanie
|
|
|
_________________ Nie udzielam porad via GG,PW, mail etc - o wszystko pytać na forum
www.tobiasz.org | www.phpnuke.com.pl |
|
|
|
 |
kufel74
~user

Dołączył(a): 8.09.2005
Posty: 23
Skąd: Mysłowice
Status: Offline
|
Wysłany: 23 Lut 2007 12:03:17
|
|
UA: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) |
Było tak że na obydwa te serwisy odtwarzałem ze starego serwera (i365.pl).
No nie znaki zapytania. Nie chciałem poprostu zakładać nowego tematu to dopisałem tutaj. Może błędnie sorx.
Tyle, ze nadal nie mam pomysłu czemu te znaczki sie robią.
|
|
|
|
|
|
|
 |
p-maz
~user

Dołączył(a): 23.12.2004
Posty: 1110
Pochwał: 120
Skąd: Wrocław
Status: Offline
|
Wysłany: 23 Lut 2007 17:47:36
|
|
UA: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9 |
Ogólnie jeśli chodzi o polskie litery to polecam Gżegżółkę i na spokojnie konwerujesz baze...
Ja ostatnio robiłem tak z bazą 24mb i pięknie poszło
|
|
|
_________________ Nie udzielam porad GG, PW.
http://e-maz.net - modyfikacja/tworzenie stron |
|
|
|
 |
|
|