Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MYSQL] Zmiana serwera i przenoszenie bazy danych, problem z kodowaniem
in5ane
post
Post #1





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Witam, przenosiłem stronę z jednego serwera na drugi i mam problem z kodowaniem.

Ustawienia kodowania serwera 1:
System porównań dla połączenia MySQL: utf8_general_ci
Kodowanie napisów dla MySQL: UTF-8 Unicode (utf8)
Metoda porównywania napisów: utf8_general_ci
Kodowanie strony: utf-8 (zapisane przy pomocy notepad, utf-8 bez bom)

Ustawienia kodowania serwera 2:
System porównań dla połączenia MySQL: utf8_general_ci
Kodowanie napisów dla MySQL: UTF-8 Unicode (utf8)
Metoda porównywania napisów: utf8_general_ci
Kodowanie strony: utf-8 (zapisane przy pomocy notepad, utf-8 bez bom)

Ustawienia serwera 1 == Ustawienia serwera 2


(IMG:http://img12.imageshack.us/img12/6426/kodowanie.gif)

Na tym obrazku przedstawione są litery: ę ó ą ś ł ż ź ć ń.
Pierwszy rządek to litery, które były zakodowane w pierwszej bazie i w drugiej tuż po imporcie, niestety, ale na stronie wyskoczyły krzaki po tym imporcie, mimo iż litery w bazie wyglądają tak samo. Drugi rządek to zaś litery w drugiej bazie po dodaniu ze strony. Czyli z tego co zauważyłem, oba serwery (bazy) mają taką samą konfigurację, ale inaczej zapisują znaki, a więc mam teraz zrobić, aby mi strona nie krzaczyła?

Proszę o pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
RafaelX
post
Post #2





Grupa: Zarejestrowani
Postów: 144
Pomógł: 28
Dołączył: 2.01.2009

Ostrzeżenie: (0%)
-----


a podczas exportu ustawiłes kodowanie na utf-8 ?
Go to the top of the page
+Quote Post
in5ane
post
Post #3





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Tak, na 100%.
Go to the top of the page
+Quote Post
Prym
post
Post #4





Grupa: Zarejestrowani
Postów: 100
Pomógł: 11
Dołączył: 20.05.2007
Skąd: z fotela :)

Ostrzeżenie: (0%)
-----


Miałem kiedyś taki przypadek na takim słabszym hostingu. ogólnie za nic nie mogłem wyeksportować poprawnie danych do drugiej bazy. rozwiązaniem okazało się przeniesienie danych łopatologicznie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) czyli export z phpmyadmin bez zapisu do pliku (eksporcik wyświetli się w textboxie) w 2 zakładce odpaliłem 2 baze i wkleiłem po kawałku (tabela po tabeli) baze 1 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

jakbym to miał robić często pewnie coś bym kombinował ale jednorazowo - po co się męczyć
Go to the top of the page
+Quote Post
in5ane
post
Post #5





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Nic nie daje, próbowałem. Tu chodzi o to, że one w tej drugiej bazie powinny być zakodowane tymi innymi znaczkami.
Go to the top of the page
+Quote Post
Prym
post
Post #6





Grupa: Zarejestrowani
Postów: 100
Pomógł: 11
Dołączył: 20.05.2007
Skąd: z fotela :)

Ostrzeżenie: (0%)
-----


hmm a te krzaczki to ci się pojawiają fizycznie w tabeli bazy? czy po wyciągnięciu na strone?

bo jeśli na stronie się krzaczy a w bazie masz ok to może nie użyłeś po połączeniu z bazą ustawienia kodowania:
$query("SET NAMES UTF8"); // takie zapytanie ustawiające sposób kodowania połączenia.

jak nie to przykro mi ale nie miałem innych kłopotów z kodowaniem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) jak narazie

Ten post edytował Prym 9.03.2009, 01:12:30
Go to the top of the page
+Quote Post
_Martin_
post
Post #7





Grupa: Zarejestrowani
Postów: 352
Pomógł: 9
Dołączył: 16.09.2005
Skąd: Rybnik

Ostrzeżenie: (0%)
-----


Również miałem taki problem sprawdź jakie masz kodowanie w bazie w tabelach np tabela: "userzy" w strukturze.
Potem sprawdź czy stronie masz kodowanie ustawione te same jak w bazie danych bo to zawsze można pomylić lub przeoczyć!
Go to the top of the page
+Quote Post
in5ane
post
Post #8





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


@Prym: no te krzaki na stronie, a w tabeli podałem jak jest. Pierwszy rządek na obrazku to tak było w starej tabeli i było dobrze, a w tej nowej tabeli jest tak i jest źle. W tej nowej tabeli dobrze na stronie wyświetla się, jak polskie znaki są jak te w drugim rządku.

@_Martin_: no to jest właśnie metoda porównywania napisów i jest utf-8.

@edit: $query = mysql_query ("SET NAMES UTF8"); nic nie pomogło.

@edit2: a może jest jakieś replace dla MySQL, powiedzmy zamieniam znaki z pierwszego rzędu na znak z drugiej rzędu (we wszystkich rekordach z całej bazy)? (bo jak zamieniłem sobie jeden znak to działał, więc jak to zrobić ze wszystkim za jednym razem?)

Jeżeli ktoś wie jak porobić te replace, to proszę o pomoc. Bo z tym chyba najszybciej zrobię, niż z myśleniem, dlaczego jest tak przy tym exporcie/imporcie.

Jednak nie jestem pewny, czy ta zamiana znaczków na 100% zadziała, więc jeżeli ktoś ma pomysł na dobry export/import, to proszę o pomoc.

Ten post edytował in5ane 9.03.2009, 01:33:00
Go to the top of the page
+Quote Post
_Martin_
post
Post #9





Grupa: Zarejestrowani
Postów: 352
Pomógł: 9
Dołączył: 16.09.2005
Skąd: Rybnik

Ostrzeżenie: (0%)
-----


Cięzka sprawa ale po co "replace"? przecież to musi hulać i bez tego!
A Może po prostu na starym serwerze miałeś php4 a na nowym php5 ? albo odwrotnie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
P.S Robiłeś kopie w postaci .SQL czy .gz (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
in5ane
post
Post #10





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Na serwerze numer jeden jest PHP 4. JEDNAK JEST WERSJA 5 (TAK SIĘ WYŚWIETLIŁO W IMPORCIE DANYCH Z BAZY)
Na serwerze numer dwa jest PHP 5.

Kopia była w postaci SQL.

P.S.: W sumie masz rację, że nie ma co się bawić w replace. Ale co dalej z tym exportem/importem?


@edit:
Zerknąłem, ze na pierwszym serwerze w bazie rozszerzenie php to mysqli, a na drugim serwerze w bazie to mysql.

Zaś wersja serwera w pierwszym to 5.0.67, a w drugim to 4.1.23-log. Wersje protokołu są takie same (10). (to są dane z phpMyAdmin)

Zerknąłem na na metodę porównywania napisów dla samej bazy (nie tabele czy rekordy czy cała baza danych) to jest latin1_swedish_ci (i to jest i na jednym serwerze i na drugim). Po zmianie na drugim serwerze na utf-8 nic nie dało, więc wróciłem do tego latin1 jak było.

Strona jest dostępna na razie pod adresem: http://dancepiortrkow.boo.pl (to już na nowym serwerze).


Serwer 1:
-- phpMyAdmin SQL Dump
-- version 3.1.2
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Czas wygenerowania: 09 Mar 2009, 07:40
-- Wersja serwera: 5.0.67
-- Wersja PHP: 5.2.9

Serwer 2:
-- phpMyAdmin SQL Dump
-- version sql.boo.pl
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Czas wygenerowania: 09 Mar 2009, 07:39
-- Wersja serwera: 4.1.23
-- Wersja PHP: 5.2.5

Jeżeli ktoś ma pomysł, to proszę o pomoc.

Ten post edytował in5ane 9.03.2009, 07:41:20
Go to the top of the page
+Quote Post
erix
post
Post #11





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Strona jest dostępna na razie pod adresem: http://dancepiortrkow.boo.pl (to już na nowym serwerze).

IMHO najgorszy hosting, limitują, co się tylko da. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Ale to tak przy okazji.

Cytat
@edit: $query = mysql_query ("SET NAMES UTF8"); nic nie pomogło.

Po ściągnięciu backupu na HDD, otwórz jakimś notatnikiem obsługującym UTF i dopisz samo zapytanie na początku dumpa.
Go to the top of the page
+Quote Post
in5ane
post
Post #12





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Dzięki wszystkim, poradziłem sobie.
Go to the top of the page
+Quote Post
Orkan
post
Post #13





Grupa: Zarejestrowani
Postów: 55
Pomógł: 4
Dołączył: 19.05.2003
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Cytat(in5ane @ 9.03.2009, 22:20:09 ) *
Dzięki wszystkim, poradziłem sobie.


to fajnie i naprawde sie ciesze w imieniu wszystkich przyszlych forumowiczow z tym samym problemem (IMG:http://forum.php.pl/style_emoticons/default/sciana.gif)

--
Czy Twój komentarz jest odpowiedzią na temat? Nie. Masz coś do powiedzenia autorowi wątku, co nie ma nic wspólnego z problemem - użyj PW. Po to jest.

erix
Go to the top of the page
+Quote Post
Rude Dude
post
Post #14





Grupa: Zarejestrowani
Postów: 41
Pomógł: 1
Dołączył: 23.07.2007

Ostrzeżenie: (0%)
-----


Chciałbym dorzucić swoje 3 grosze. Męczyłem się właśnie z tym kodowaniem i w wyniku połączenia informacji z dwóch różnych for internetowych znalazłem takie o to rozwiązanie.

  1. mysql_query('SET character_set_connection=utf8');
  2. mysql_query('SET character_set_client=latin2_general_ci');
  3. mysql_query('SET character_set_results=latin2_general_ci');
  4. mysql_query("set names latin2;");

Wstawiamy ten kod w naszym configu.
Kodowanie w bazie to utf-8, a kodowanie na stronie to np. w moim przypadku iso-8859-2. Dodanie tych linijek spowodowało, że krzaczki znikły. Mam nadzieję że się komuś to przyda (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 20:38