Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z kodowanie w bazie
Forum PHP.pl > Forum > Bazy danych > MySQL
GigaDownload
Witam,

Właśnie mam taką sytuację, że muszę przenieść swój serwis z boo.pl na neteasy.pl (z powodów technicznych - duży ruch).
Największy problem mam z bazą danych, gdyż WordPressy, SMF etc. mają normalnie polskie litery w bazie, a autorski cms ma zapisane w bazie cuda nie widy typu:

Ăł - to jest niby ó
ą - to jest niby ą
ę - to też jest niby ę (dziwne że takie samo jak ą)
łó - to jest takie łó
Ĺź - ż...
ł - ł...

Co mam zrobić w takiej sytuacji? Cała strona bazuje na kodowniu uft-8, w bazie UTF-8 Unicode (utf8) i utf8_unicode_ci.
Zmiana znaków może być trudna ze względu na ą/ę. Serwer w dodatku nie umożliwia połączenie się zewnętrzym programem.

Proszę o odpowiedź. winksmiley.jpg

edit: Zapomniałem o adresach...
Aktualny serwer: www.gigadownload.net.pl
Nowy serwer: 195.24.77.247/~gigad/
nowotny
Wygląda jakbyś coś namieszał z bazą danych przy przenoszeniu... porównaj sobie kodowanie w obydwu bazach danych, starej i nowej...
GigaDownload
Co ciekawsza takie fajne znaczki mam w oryginalnej bazie - i dobrze skrypt odczytuje tongue.gif
Radek_1
Mam dokładnie taki sam problem. Też chcę przenieś serwis ze starego na nowy serwer i przy przenoszeniu bazy danych są właśnie krzaczki typu zamiast "ł" jest "Ăł" (i w MySQL i w działającym skrypcie oraz w pliku baza.sql). Tak jak koledze, na starym serwerze mi działało wszystko i były normalnie polskie znaki.
Na starym serwerze wszystko jest kodowane utf8_polish_ci.
Na nowym jakkolwiek bym nie zmienił kodowania i systemu porównań to cały czas są krzaczki jakieś.
Nie wiem czy to problem związany z eksportowaniem ze starej bazy, czy problem importowania do nowej.
Ktoś może zna jakieś rozwiązanie? Męczę się z tym od 3 dni :/
cielos
Nie wiem czy pomogę, ale miałem podobny problem, a mianowicie, gdy chciałem odczytać np. słowo Michał to mi go nie wyszukiwało, ale udało mi się rozwiazać ten problem w następujący sposób. Ustawiłem kodowanie na stronie z formularzem na utf-8 i kodowanie na stronie pobierającej dane również na utf-8 i wszystko zaczęło śmigać.
punkomuzykant
spróbuj dorzucić to
Kod
mysql_query('SET NAMES \'utf8\'');

po zapytaniu do bazy np w ten sposób
Kod
$query = "SELECT id, nazwa_zdjecia, opis_zdjecia FROM galeria_flash ";
mysql_query('SET NAMES \'utf8\'');
$result = mysql_query ($query);
Radek_1
Admin nowego serwera powiedział, że źle jest wyeksportowana baza danych. Polecił bym zrobił to ponownie przy pomocy mysqldump'a i warunku --default-character-set=utf8. Szukałem i czytałem wszędzie o tym (bo nie miałem pojęcia, że takie coś istnieje smile.gif ) ale nigdzie nie jest napisane gdzie to polecenie mam wpisać. Dostępu do konsoli ani shella nie mam. Ktoś gdzieś napisał, żeby zrobić taki skrypt:

  1. <?php
  2.  
  3. passthru("mysqldump -u nick -p pass -h host --default-character-set=utf8 baza > kopia_bazy.sql") 
  4.  
  5. ?>


To też go zrobiłem, umieściłem na nowym serwerze i odpaliłem. Niby błędy nie wyskakują, ale nigdzie nie moge znaleźć tego pliku kopia_bazy.sql. Jak w końcu się utworzył (po dodaniu / przed nazwą pliku) to był pusty. Pomoże ktoś? smile.gif



Problem rozwiązałem w końcu. Napiszę teraz rozwiązanie, jeżeli ktoś się spotka z czymś podobnym.

Ściągnięcie bazy danych za pomocą mysqldumpa i z atrybutem kodowania utf8 nie zadziałało (powyższy post - baza danych nie chciała się ściągać ponieważ między -p i hasłem robiłem spację. Powinno to wyglądać tak: "-ppass"). Zedytowałem plik bazy danych edytorem tekstu. Wyszukałem wyrazów np. "sąsiad", który wyglądał mniej więcej tak "sĂ“siad". Klikałem opcję, by wyszukał wszystkich "Ă“" i zamienił je na polskie odpowiedniki w iso-8859-2, czyli w tym wypadku "ą", naszę polskie "ą". Potem kolejno tak z wszystkimi polskimi literkami. Następnie ustawiłem kodowanie latin2 w phpmyadminie, wgrałem bazę danych i działa wszystko smile.gif Jeżeli macie dużą bazę danych to jednak ciężko będzie edytować tak ogromny plik tekstowy i zamieniać te literki.
swist666
Cytat(punkomuzykant @ 25.02.2008, 20:54:08 ) *
spróbuj dorzucić to
Kod
mysql_query('SET NAMES \'utf8\'');

po zapytaniu do bazy np w ten sposób
Kod
$query = "SELECT id, nazwa_zdjecia, opis_zdjecia FROM galeria_flash ";
mysql_query('SET NAMES \'utf8\'');
$result = mysql_query ($query);


Jesteś bogiem.. smile.gif Od dobrych dwóch godzin zmagam się z tym kodowaniem i po ustawieniu SET NAMES latin2 wszystko mi zaczęło działać.. Trochę offtopic bo miałem inny problem ale może komuś pomogę - w bazie wszystko się zgadzało były ogonki, phpMyAdmin wszystko ładnie wyświetlał ale kiedy chciałem na stronie puścić to przez SELECT'a wszystko się psuło i zamiast znaków PL były znaki zapytania (?!). Ustawiłem na początku każdego skryptu wspomniane SET NAMES i jak ręką odjął! Dzięki wielkie smile.gif

dodam jeszcze, że kodowanie w bazie mam ustawione latin2 a porównywanie latin2_general_ci
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.