Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Kodowanie mysql


Speed1111

Rekomendowane odpowiedzi

Witam. Mam duży problem. przenosze stronę na nowy hosting, a własciwie wczoraj już kupłem i przeniosłem, ale mam problem z baza danych. Serwer kupiłem na linuxpl.com i obsługa serwisu pomaga mi go rozwiązać, jednak jest pewien problem. Administrator, który zarzadza starym hostingiem nie odzywa sie od dłuższego czasu. Problem to polskie znaki. Obsługa hostingu linuxpl.com chciała mi przenieśc bazę danych, jednak cytując, to co mi napisali.

Baza jest zle wgrana poniewaz nie ma polskich znakow

nie da sie dostac do bazy zdalnie bo blokuja takie polaczenia

zrzut bazy z phpmyadmina robi krzaki bo maja zle ustawiona baze

phpmyadmin dziala w utf8 a baza jest w latin1

prosze poprosic adminow o zrobienie kopi bazy w latin1

Wynika, że jest jakiś problem z kodowaniem phpmyadmin. Czy jest jakiś sposób na tą sytuacje?

Odnośnik do komentarza
Udostępnij na innych stronach

"phpmyadmin dziala w utf8"

Chodzi o metodę porównywania napisów? Sprawdź ją logując się do phpmyadmina, zakładka Operacje: Metoda porównywania napisów. Porównywanie napisów powinno być takie samo jak kodowanie bazy. Podaj również System kodowania znaków dla MySQL (to będzie widoczne w stronie głównej po zalogowaniu się do phpmyadmin.

Odnośnik do komentarza
Udostępnij na innych stronach

Niestety nie mam takie zakładki, mam tylko.

Bazy danych

SQL

Status

Zmienne

Kodowania napisów

Mechanizmy

Procesy

Eksport

Import

Synchronize

Edit.

Oczywiście, to jest stara baza danych, na nowym mam taka zakładkę.

Edytowane przez Speed1111
Odnośnik do komentarza
Udostępnij na innych stronach

Zakładka Operacje pojawia się już po wybraniu bazy danych z menu po lewej stronie. Kodowanie napisów dla MySQL sprawdzisz natomiast na stronie głównej przed wyborem bazy. Nie wiem czy tutaj może tkwić błąd, ale zobacz jakie tam masz kodowania. No i najważniejsze później, wejdź w bazę danych twojego forum tak, aby wyświetlane były wszystkie tabele razem z podsumowaniem. Podaj kodowanie samych tabeli i ogólne, całej bazy (pod wszystkimi tabelami je znajdziesz).

Odnośnik do komentarza
Udostępnij na innych stronach

Powiedz mi jeszcze jak fizycznie wygląda sprawa PL znaków w bazie, otwórz ją jakimś edytorem tekstu (osobiście polecam Notepad++). Może to chwilę potrwać, ale w końcu się otworzy. Odszukaj treść postów i sprawdź, czy w kopii bazy, którą próbujesz wgrać, są polskie znaki, czy może już pytajniki. Będzie wtedy wiadomo, czy to stara kopia bazy jest wadliwa, czy problem pojawia się przy montowaniu bazy na nowy serwer.

Odnośnik do komentarza
Udostępnij na innych stronach

U mnie kodowanie bazy to latin2_general_ci, metoda porównywania również, ale system porównań dla połączenia MySQLA i kodowanie napisów dla MySQL to utf8, jak u ciebie - i wszystko działa. Nie wiem, ja przy wgrywaniu bazy korzystałem z konsoli i po otwarciu mysql'a wpisywałem set names latin2; być może to dlatego wszystko u mnie działa, chociaż nie jestem pewien w 100%.

Jak robisz kopię bazy, to zaznaczasz jakiś tryb zgodności? Jaką miałeś starą wersję MySQL?

Odnośnik do komentarza
Udostępnij na innych stronach

Chyba zrobiłes jakiś bład przy imporcie lub exporcie. Do robienia kopi baz polecam narzędzie MySQLDumper.

A co do blokowania połaczeń do bazy. To w DirectAdmin i cPanel jest opcja dodania IP lub hostu z którego bedzie można się połaczyć do bazy.

Odnośnik do komentarza
Udostępnij na innych stronach

Nie stosowałem tego programu i wole w bazę nie ingerować, bo jak coś zepsuje, to nic tego odwróci.

Ten konwerter był już sprawdzany znacznie wcześniej niż napisałem tu temat. Pisałem nawet z osoba, która go stworzyła i nic nie mogliśmy z działać. Pytanie jak przekodować, jak żadne kodowanie nie działa.

Odnośnik do komentarza
Udostępnij na innych stronach

Nie da się kodować z automatu. Trzeba pojedynczo każdy znak, metodą znajdź i zastąp. Koniecznie w edytorze który rozpoznaje i zapisuje w różnych kodowaniach - szczególnie latin1, latin2, unicode (iso-8859-1, iso-8859-2, utf-8 bez BOM)

Takie rzeczy sprawdza się na localu i na kopii bazy.

Odnośnik do komentarza
Udostępnij na innych stronach

Ściągnij notepada++ http://notepad-plus-plus.org Wczytaj bazę danych. Zobacz na dolnej listwie jakie masz kodowanie tekstu (jeżeli ściągałeś przez phpMyAdmin, powinno być w formacie utf-8, bez BOM). Znajdź tekst z polskimi literkami. Domyśl się jaki znak odpowiada konkretnej polskiej literze - skopiuj znak i wklej go do "zamień..." w "znajdź tekst", poniżej wpisz odpowiadającą jej polską literę. I tak ze wszystkimi polskimi.

Teraz pokaż mi cały nagłówek jednej tabeli. Może wyglądać tak:

CREATE TABLE IF NOT EXISTS `ipb_admin_login_logs` (
 `admin_id` int(10) NOT NULL AUTO_INCREMENT,
 `admin_ip_address` varchar(16) COLLATE utf8_polish_ci NOT NULL DEFAULT '0.0.0.0',
 `admin_username` varchar(40) COLLATE utf8_polish_ci NOT NULL DEFAULT '',
 `admin_time` int(10) unsigned NOT NULL DEFAULT '0',
 `admin_success` int(1) unsigned NOT NULL DEFAULT '0',
 `admin_post_details` text COLLATE utf8_polish_ci,
 PRIMARY KEY (`admin_id`),
 KEY `admin_ip_address` (`admin_ip_address`),
 KEY `admin_time` (`admin_time`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=77 ;

Oczywiście wszystko robisz na kopii bazy. :)

Odnośnik do komentarza
Udostępnij na innych stronach

Wejdź też do swojego nowego ACP > Zaawansowane > Zarządzanie SQL > Zmienne systemowe

Znajdź ten fragment i go pokaż:

character_set_client 	utf8
character_set_connection 	utf8
character_set_database 	utf8
character_set_filesystem 	binary
character_set_results 	utf8
character_set_server 	utf8
character_set_system 	utf8
character_sets_dir 	dane prywatne    
collation_connection 	utf8_general_ci
collation_database 	utf8_polish_ci
collation_server 	utf8_general_ci

Odnośnik do komentarza
Udostępnij na innych stronach

Po co robić to recznie ?

    <?php
              $krzaki = array('¡', 'Æ', 'Ê', '£', 'Ñ', 'Ó', '¦', '¯', '¬', '±', 'æ', 'ê', '³', 'ñ', 'ó', '¶', '¿', '¼');
              $ogonki = array( 'Ä„', 'Ć', 'Ę', 'Å', 'Ń', 'Ó', 'Åš', 'Å»', 'Ź', 'Ä…', 'ć', 'Ä™', 'Å‚', 'Å„', 'ó', 'Å›', 'ż', 'ź');

               $file = "nowyplikbazy.sql";   
               $test = file_exists($file);
               if ($test)
                {
                echo "Skasuj plik nowyplikbazy.sql na serwerze i ponownie uruchom skrypt konwerter.php";
                }
                else
                {
               $fp = @fopen("nazwa pliku bazy.sql", "r");
               if ($fp) {
                     while (!feof($fp)) {
                     $buffer = fgets($fp, 4096);
                     $buffer =  str_replace( $krzaki, $ogonki, $buffer );
                     flock($fp, 2);
                     $fp2 = fopen($file, "a");
                     fputs($fp2, $buffer); 
                     flock($fp, 3); 
                                        }
                        }
                                    fclose  ($fp);
                        fclose  ($fp2);
                        echo "Koniec konwersji";
                         }

            ?>

Autorem skryptu jest matma4u

Odnośnik do komentarza
Udostępnij na innych stronach

Pobierz załącznik.

Znajdz : $fp = @fopen("nazwa pliku bazy.sql", "r");

nazwa pliku bazy.sql zmien na nazwe swojego backupu bazy.

Backup bazy i plik.utf.php wrzucasz do jednego katalogu na serwerze. Pamietaj że baza ma być nie spakowana, musi mieć rozszerzenie .sql

Pozniej w przegladarce odpalasz utf.php

Tworzy sie plik nowyplikbazy.sql i importujesz go do phpmyadmin.

utf.zip

Odnośnik do komentarza
Udostępnij na innych stronach

Mi coś nie działa. Mam taki błąd

Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /home/gokudev1/domains/testowa.vot.pl/public_html/log/utf.php on line 2

Parse error: syntax error, unexpected T_STRING in /home/gokudev1/domains/testowa.vot.pl/public_html/log/utf.php on line 2

Odnośnik do komentarza
Udostępnij na innych stronach

To może ten:

<?php

               $file = "nowyplikbazy.sql";   
               $test = file_exists($file);
               if ($test)
                {
                echo "Skasuj plik nowyplikbazy.sql na serwerze i ponownie uruchom skrypt konwerter.php";
                }
                else
                {
               $fp = @fopen("plikbazy.sql", "r");
               if ($fp) {
                     while (!feof($fp)) {
                     $buffer = fgets($fp, 4096);
                     $buffer =  iconv("ISO-8859-1","UTF-8",$buffer);
                     flock($fp, 2);
                     $fp2 = fopen($file, "a");
                     fputs($fp2, $buffer); 
                     flock($fp, 3); 
                                        }
                        }
                                    fclose  ($fp);
                        fclose  ($fp2);
                        echo "Koniec konwersji";
                         }

            ?>

Odnośnik do komentarza
Udostępnij na innych stronach

Musisz zainstalować serwer PHP i MySQL swoim kompie. Są dostępne "gotowce", które zainstalują ci go bez większych problemów - np. WebServ, Xampp, WampServer,

VertrigoServ (jak się prowadzi forum, to jest to niezbędne narzędzie, bo np. bezpiecznie i komfortowo możesz testować rozwiązania, które zaimplementujesz na realnym serwerze).

Skrypt zapisz jako np. konwerter_8859-1_utf-8. Umieść go razem z plikiem bazy w katalogu www serwera, uruchom serwer i odpal plik konwertera.

Ale to jeszcze nie koniec pracy - podaj informacje o które prosiłem.

--

Zagapiłem się :) . Ten drugi skrypt nie zmieni ci polskich literek. Ten pierwszy też chyba nie, bo plik bazy jest zapisany w utf, a nie w 8859-1.

Edytowane przez Gonzo
Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.