|
|
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo
|
|
Kodowanie bazy / krzaczki zamiast polskich liter |
Autor |
Wiadomość |
chelloPL
Pomógł: 413 razy Posty: 2544
|
Wysłany: 31-10-2005, 20:48 Kodowanie bazy / krzaczki zamiast polskich liter
|
|
|
ZANIM napiszesz w tym temacie następny post, przeczytaj dokładnie WSZYSTKO co poniżej napisałem.
Poniższy post podzielony jest na 3 działy.
1. Opisuję jak (w możliwie najbezpieczniejszy i najmniej problemowy) sposób wykonywać backup bazy.
2. Jak prawidłowo przywrócić wykonany wcześniej backup.
3. Jakie poprawki wprowadzić do modułu kopii zapasowej, aby w 100% odtworzyć bazę.
Jeśli przenosisz bazę danych pomiędzy serwerami, przeczytaj również temat w FAQ: Jak przenieść bazę forum z serwera na serwer.
<hr>
- Jak prawidłowo wykonać kopię bazy:
- Przy użyciu wbudowanej w forum funkcji backupu (znajdującej się w PA -> SQL -> Kopia zapasowa)
* Gdzie należy opcji szukać - już podałem. Wykonanie backupu sprowadza się do kliknięcia "Wykonaj kopię teraz" (polecam odznaczyć "Kopiuj zawartość tabel search")
* Plik z backupem został umieszczony w katalogu /db/db_backup/
- Przy użyciu phpMyAdmin (opis w oparciu o phpMyAdmin 2.6.4)
* Zakładam, że każdy ma dostęp do phpMyAdmina (instalacji i konfiguracji tego programu nie mam zamiaru opisywać!)
* Uruchamiamy phpMyAdmina
* W oknie po lewej stronie wybieramy naszą bazę (którą chcemy zabezpieczyć). Dla przykładu konkretnego niech nazywa się ona Gość.
UWAGA: niektórzy administratorzy zabraniają zmiany bazy danych i jest Twoja baza otwierana automatycznie!
* W prawym oknie pojawia się (na samej górze) Eksport
* Zaznaczamy wszystkie tabele
* Wybieramy następujące "Opcje SQL":
Obejmij eksport transakcją
Dodaj DROP TABLE
Dodaj IF NOT EXISTS
Kompatybilność eksportu SQL: MYSQL40 (najważniejsza opcja!)
Zapisz jako plik
- Jak prawidłowo odtworzyć kopię bazy
- Przy pomocy phpMyAdmina (kopię wykonaliśmy również z phpMyAdmina i zaznaczyliśmy kompatybilność eksportu MYSQL40 )
Dodanie opcji MYSQL40 zapobiega dopisywaniu Kod: | DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 |
* Wybieramy w phpMyAdminie naszą bazę.
* Na górze wybieramy SQL (interesuje nas na stronie tylko ramka: "lub Lokalizacja pliku tekstowego")
* Klikamy "Przeglądaj" i wskazujemy nasz plik z kopią
* Najważniejsze: z rozwijanej listy: "Zestaw znaków dla pliku" wybieramy binary
* Klikamy "Wykonaj"
UWAGA: jeśli otworzy Ci się biała strona, to oznacza iż plik z bazą jest za duży. Co zrobić w takim wypadku opisuje inny temat w FAQ.
- Przy pomocy phpMyAdmina (kopię wykonaliśmy również z phpMyAdmina i NIE zaznaczyliśmy kompatybilność eksportu MYSQL40 i/lub w zrobionym zrzucie bazy mamy ciąg "DEFAULT CHARSET..." )
* Wchodzimy do phpMyAdmina
* Na pierwszej stronie powinniśmy mieć coś w stylu: "System kodowania znaków dla MySQL: UTF-8 Unicode (utf8)"
Z innymi kodowaniami się nie spotkałem i ich nie będę opisywał. Jednak jeśli takie występuje, to należy najprawdopodobniej to samo wpisać w poleceniach SET poniżej (wyróżnione kolorkiem)
* Edytujemy nasz plik .sql z kopią bazy.
* Na samym początku pliku dopisujemy:
Cytat: | SET NAMES 'utf8';
SET CHARACTER SET 'utf8';
SET SESSION collation_connection = 'latin1_general_ci'; |
* Zapisujemy plik
* Wybieramy w phpMyAdminie naszą bazę.
* Na górze wybieramy SQL (interesuje nas na stronie tylko ramka: "lub Lokalizacja pliku tekstowego")
* Klikamy "Przeglądaj" i wskazujemy nasz plik z kopią
* Na rozwijanej liście może zostać dowolna wartość (np: utf8)
* Klikamy "Wykonaj"
- Przy pomocy DBLoadera (kopia została wykonana przy użyciu wbudowanej w forum "Kopii zapasowej")
* Kopiujemy plik z backupem na nowe forum do katalogu głównego forum.
* Wchodzimy do DumpLoadera (http://twojeforum/dbloader/dbloader.php)
* Wybieramy "Wczytaj bazę danych"
* Przed wybraniem pliku (o ile mamy już cokolwiek na forum) proponuję usunąć wszystkie tabele prefix_* (unikniemy w ten sposób błędów, iż nie można utworzyć tabeli, a ponieważ tabele będą już zawierały dane, stąd może dojść do zdublowania informacji). Na wszelki wypadek możesz wykonać aktualną kopię.
* No to zaczynamy: "Rozpocznij wgrywanie"
* Czekamy... i sprawdzamy czy wszystko ok jest z forum (przy tej metodzie nie spotkałem się aby wykonany i wgrany dump nie działał bądź były z nim jakieś problemy z kodowaniem polskich liter)
* UWAGA: w szczególnych przypadkach kopia ta może odtworzyć się z błędami (w efekcie nie będziemy mieli odtworzonych kilku tabel) - sprawdźmy to w zakładce "Sprawdzenie bazy" w dbloaderze. Jeśli tak, wykonaj punkt poniższy wykorzystując do przywrócenia phpMyAdmina.
- Przy pomocy phpMyAdmina (kopia została wykonana przy użyciu wbudowanej w forum "Kopii zapasowej") (opis w oparciu o phpMyAdmin 2.8.x i 2.9.x)
WARUNEK konieczny do prawidłowego odtworzenia polskich znaków: • W starej bazie, w widoku struktury tabel widoczny był napis: "Metoda porównywania napisów" i wartość: "latin1_swedish_ci"
* Wybieramy w phpMyAdminie naszą bazę.
* Na górze w ramce po prawej stronie wybieramy Import (interesuje nas na stronie tylko ramka: "Plik do importu")
* Klikamy "Przeglądaj" i wskazujemy nasz plik z kopią
* Najważniejsze: z rozwijanej listy: "Zestaw znaków dla pliku" wybieramy ISO-8859-1
* Przypomnę, że nie ruszamy zawartości pozostałych ramek - mają one zostać domyślne
* Klikamy "Wykonaj"
UWAGA: jeśli otworzy Ci się biała strona, to oznacza iż plik z bazą jest za duży. Co zrobić w takim wypadku opisuje inny temat w FAQ.
- Jakie poprawki wprowadzić do modułu kopii zapasowej, aby w 100% odtworzyć bazę (dot. tylko phpBB by Przemo w wersji 1.12.5)
Co prawda temat ten został już przeze mnie opisany w dziale "Mod. Gotowe [ 1.12.5 ]" i temacie Ilość przechowywanych kopii, ale jest on na tyle ważny i związany z tematem, że postanowiłem go powielić.
- Problem objawia się przy odtwarzaniu bazy przy pomocy dumploadera. Najczęściej pasek postępu z kilkunastu (kilkudziesięciu) procent (w zależności od rozmiaru bazy danych), od razu przeskakuje do 100% i stwierdza, że baza została odzyskana prawidłowo.
Niestety, ale w efekcie błędu, nie zostają odzyskane tabele phpbb_posts_text oraz następne. Następuje również błędne informowanie o "sukcesie" operacji.
Dodatkowo zostały usunięte następujące błędy i niedogodności:
- usunięte zostały 4 błędy przy wykonywaniu backupu (w tym związany z (nie)usuwaniem starych kopii),
- wykonywanie kopii (jeśli serwer obsługuje kompresję gzip), powinno znacznie mniej obciążać serwer oraz potrzebna jest kilkanaście razy mniejsza ilość wolnego miejsca na serwerze do wykonania kopii,
- ręczne wykonanie kopii zapasowej z poziomu PA tworzy dodatkową kopię (to, co jest wpisane jako ilość maksymalna kopii + 1) - uznałem, że administrator jeśli wykonuje kopię ręcznie, to nie powinno to kasować poprzednich kopii.
Plik z poprawkami (2 pliki) dostępny jest w temacie Ilość przechowywanych kopii.
Podkreślę jednak, że jest to poprawka do modułu wykonującego kopie zapasowe. Oznacza to, że kopie wykonane po zastosowaniu poprawki powinny się prawidłowo odtworzyć.
Powyższy opis (punkty 1 i 2) może nie działać, jeśli konfiguracja serwera SQL jest "egzotyczna".
INFORMACJA od autora: Straciłem kilka godzin na uporządkowanie tego tematu. Zostawiłem tylko wiadomości, które pomogły lub jest bardzo prawdopodobne, iż mogą pomóc. I taki charakter tego tematu chciałbym zachować. A jeśli znalazłeś inny sposób aby z sukcesem przenieść bazę w przypadku problemów z kodowaniem, opisz tutaj go dokładnie.
PROSZĘ nie pisać tutaj wiadomości typu: mam "krzaczki", kto mi przeniesie bazę itp. Do takich pytań jest specjalny temat w dziale Ogólnym: Dyskusja nt. braku polskich liter na forum.
Dziękuję za zrozumienie.
//Historia edycji:
08-10-2006: dodany opis odtworzenia bazy w phpMyAdmine (jeśli kopia wykonana została przez forum).
08-10-2006: uporządkowanie treści i pogrupowanie podtematów, aby struktura była bardziej przejrzysta.
16-11-2007: dodanie opisu poprawki dla modułu kopii zapasowej (pkt. 3)
<br>
<br>
<div align="center">
<center>
<table cols="3" cellpadding="3" cellspacing="0" border="1" width="300" style="border-collapse: collapse" bordercolor="#111111">
<tr>
<td align="center"><font size="2">HTML 4.0</td>
<td align="center"><font size="2">NUMERY</td>
<td align="center"><font size="2">ZNACZNIKI</td>
</tr>
<tr>
<td align="center">Ą</td>
<td align="center">Ą</td>
<td align="center">Ä<span lang="pl">,,</span></td>
</tr>
<tr>
<td align="center">ą</td>
<td align="center">ą</td>
<td align="center">Ä<span lang="pl">...</span></td>
</tr>
<tr>
<td align="center">Ć</td>
<td align="center">Ć</td>
<td align="center">Ä<span lang="pl">†</span></td>
</tr>
<tr>
<td align="center">ć</td>
<td align="center">ć</td>
<td align="center">Ä<span lang="pl">‡</span></td>
</tr>
<tr>
<td align="center">Ę</td>
<td align="center">Ę</td>
<td align="center">Ä<span lang="pl">˜</span></td>
</tr>
<tr>
<td align="center">ę</td>
<td align="center">ę</td>
<td align="center">Ä<span lang="pl">™</span></td>
</tr>
<tr>
<td align="center">Ł</td>
<td align="center">Ł</td>
<td align="center">Å<span lang="pl"></span></td>
</tr>
<tr>
<td align="center">ł</td>
<td align="center">ł</td>
<td align="center">Å<span lang="pl">,</span></td>
</tr>
<tr>
<td align="center">Ń</td>
<td align="center">Ń</td>
<td align="center">Å<span lang="pl">ƒ</span></td>
</tr>
<tr>
<td align="center">ń</td>
<td align="center">ń</td>
<td align="center">Å<span lang="pl">„</span></td>
</tr>
<tr>
<td align="center">Ó</td>
<td align="center">Ó</td>
<td align="center">Ã<span lang="pl">"</span></td>
</tr>
<tr>
<td align="center">ó</td>
<td align="center">ó</td>
<td align="center">ó</td>
</tr>
<tr>
<td align="center">Ś</td>
<td align="center">Ś</td>
<td align="center">Å<span lang="pl">š</span></td>
</tr>
<tr>
<td align="center">ś</td>
<td align="center">ś</td>
<td align="center">Å<span lang="pl">›</span></td>
</tr>
<tr>
<td align="center">Ź</td>
<td align="center">Ź</td>
<td align="center">Ź</td>
</tr>
<tr>
<td align="center">ź</td>
<td align="center">ź</td>
<td align="center">Å°</td>
</tr>
<tr>
<td align="center">Ż</td>
<td align="center">Ż</td>
<td align="center">Å»</td>
</tr>
<tr>
<td align="center">ż</td>
<td align="center">ż</td>
<td align="center">ż</td>
</tr>
</table></center>
</div>
<br>
|
_________________ Zanim napiszesz do mnie na GG/PW, koniecznie przeczytaj zasady.
Sygnaturka to nie tablica z ogłoszeniami! PAMIĘTAJ o tym! Nadużywanie i celowe reklamowanie stron jest ZABRONIONE i karalne!
Gość, a czy Ty nie masz sobie nic do zarzucenia? |
|
|
|
|
Gadatliwa Kasia
|
|
|
|
daker
Posty: 58
|
Wysłany: 09-01-2006, 16:53
|
|
|
mam baze w latin1 no i importowalem na nowy serwer na poczatkuzrzutu dalem
SET NAMES 'latin1';
SET CHARACTER SET 'latin1';
SET SESSION collation_connection = 'latin1_swedish_ci';
no i dziala wszyttko pod IE ale pod Opera nie dziala |
|
|
|
|
SirmarK
Posty: 8
|
Wysłany: 25-03-2006, 00:28
|
|
|
tak czytam o problemach z krzaczkami i mi sie nasuwa jedno.
baza na serwerze bedize zakodowana w iso--2 (latiin2)
ale sam serwer moze dzialac w latin1 i wtedy sie pojawia problemy.
Trzeba przy polaczeniu wymusic odpowiedni charset
Bierzemy plik /forum/db/mysql4.php
otwieramy plik i dostawiamy linijke
Kod: |
mysql_query("set names 'latin2'",$this->db_connect_id);
|
po modyfikacji wyglada to tak
Kod: |
if( $this->db_connect_id )
{
if( $database != "" )
{
$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;
}
}
return $this->db_connect_id;
}
|
|
|
|
|
|
Krysto
Posty: 7
|
Wysłany: 30-03-2006, 11:11
|
|
|
Witam serdecznie mam problem z polskimi znakami na forum. Dostałem następującego maila od administratora serwera:
Cytat: | >W związku z licznymi problemami, pytaniami i prośbami o zmianę
>
> kodowania bazy danych mysql, postanowiliśmy zmienić domyślne
>
> ustawienia kodowania dla nowych baz oraz kodowania dla systemu
>
> połączeń na standardowe obowiązujące w Polsce czyli iso-latin2
> (iso8859-2)
>
>
>
> Bazy które miały ustawione kodowanie na latin1 (iso8859-1)
>
> a znaki w bazie zakodowane były w latin2 (ustawienia niestandardowe
>
> stosowane w starych bazach) powinny być przekodowane do
>
> latin2.
>
> Być może nie każdy wie jak to zrobić, wystarczy więc
>
> w pliku w którym występuje połączenie do bazy zaraz
>
> po połączeniu do bazy (BD_CONN) wysłać następujące
>
> zapytanie SQL:
>
>
>
> $db->sql_query("SET NAMES latin1");
>
>
>
> które zmieni ustawienie domyślne połączeń serwera z latin2 na latin1.
>
> Każdy użytkownik może w ramach swojego oprogramowania,
>
> dokonać samodzielnie zmian wszystkich parametrów serwera
>
> bez względu na to jakie są ustawienia domyślne:
>
>
>
> $db->sql_query("SET character_set_connection=latin1");
>
> $db->sql_query("SET character_set_client=latin1");
>
> $db->sql_query("SET character_set_results=latin1");
>
>
>
> Sam również może zmienić kodowanie bazy na dowolne
>
> jakie mu pasuje.
>
>
>
> Informujemy iż rozwiązanie gdzie baza kodowana jest w latin1
>
> a znaki w niej wprowadzone są kodowane w latin2 jest
>
> rozwiązaniem niepoprawnym gdyż polskie znaki są błędnie
>
> rozpoznawane przez bazę (np. w sytuacji kiedy wyświetlamy
>
> wyniki w kolejności alfabetycznej) problemy z ich rozpoznaniem
>
> będą również w nowych wersjach phpMyAdmin który
>
> obsługuje tylko standardowe systemy kodowania.
>
>
>
> Dodam jeszcze że mając poprawne kodowanie bazy i znaków w latin2
>
> w prosty sposób możemy zmienić kodowanie strony WWW na UTF-8
>
> czyli standard międzynarodowy, wystarczy więc tylko ustawić przy
>
> połączeniu do bazy system połączeń na utf8:
>
>
>
> $db->sql_query("SET NAMES utf8");
>
>
>
> i na stronie www zmienić charset na uft-8:
>
>
>
> <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
>
>
>
> w ten sposób mamy stronę zakodowaną w utf-8 bez konieczności
>
> jakichkolwiek zmian w bazie.
>
> Polecamy te rozwiązanie. |
Próbowałem już wiele sposobów edycji pliku mysql4.php jednak nic nie pomogło... dodawałem polecenia mysql_query('SET NAMES latin2', $this->db_connect_id); i wciąż mam krzaczki. Błagam o pomoc. |
|
|
|
|
szarywilk
Posty: 1
|
Wysłany: 28-04-2006, 19:49
|
|
|
Jestem bliski rozwiązania tego problemu - proszę o pomoc!
Pomógł mi ten post:
Cytat: | Witam!
Napisałem o tym już na forum phpbb by Przemo!
Brak polskich znaków występuje na serwerach z nowymi wersjami MySQL oraz phpMyAdmin.
Aby mieć polskie znaki zamiast znaków zapytania należy:
1. Wgrać w całości bazę danych na serwer, jeżeli baza już jest to ok.).
2. Ustawić w phpMyAdmin:
- język: Polish (pl-utf-
- system porównań dla połączenia MySQL: utf8_general-ci
- dla konkretnej tabeli - metoda porównywania napisów: utf8_general-ci
3. Generalnie chodzi o polskie znaki w tabeli phpbb_post_text oraz phpbb_topisc (tabele odpowiedzialne za treść postów oraz ich tytuł) Oczywiście można zmienić wszystkie tabele np. odpowiedzialne za tematy for, użytkowników itp.).
4. W pliku sql gdzie mamy cały zrzut bazy danych odszukujemy zrzuty w/w tabel. Tworzymy nowy plik o nazwie post_text (oczywiście nazwa dowolna) i kopiujemy do niego z pliku sql dane tabeli phpbb_post_text. TYLKO DANE BEZ STRUKTURY TABELI. Analogicznie do każdej tabeli nowy plik.
5. Otwieramy taki plik w edytorze pozwalającym na konwersje znaków (polecam EdHTML). Ustawiamy taki sposób kodowania aby polskie litery miały ogonki (ISO-8859-2).
6. Teraz nadszedł czas na zmianę na utf-8 (znaki Unicode). W opcjach programu wybieramy znajdź/zmień ewentualnie zastąp. W polu "znajdź" wpisujemy np. ą a w polu "zmień na" wpisujemy & # 261; (bez spacji) Klikamy OK i wszystkie ą zostają zmienione.
Kody polskich znaków w systemie Unicode znajdziecie m.in na http://www.kurshtml.boo.pl/skrypty/unicode.html
7. W ten sposób zmieniamy wszystkie polskie znaki na znaki Unicode.
Przykład: Zdanie z polskimi znakami: "Już będą wyświetlane prawidłowo."
Po naszej zmianie wygląda: Ju& #380; b& #281;d& #261; wy& #347;wietlane prawid& #322;owo.
8. Wchodzimy do phpMyAdmin, czyścimy tabelę w której chcemy dokonać zmian i za pomocą zakładki SQL wrzucamy (kopiujemy) zawartość naszego pliku (już ze znakami Unicode). Ważne aby przed przystąpieniem do uzupełniania tabeli wyczyścić ją a nie nadpisywać.
9. Przeglądając zmienioną tabelę widzimy już w niej znaki Unicode a na naszym forum są już polskie znaki!
Działa w 100%. Sprawdzałem na dwóch serwerach na których właśnie po przejściu na nowe wersje
programów na forach występowały znaki zapytania. |
Tak jak pisze, wszędzie w phpmyadmin mam utf8. Bazę danych przekonwertowałem ręcznie na utf8 za pomocą tablicy kodowej, "wgrałem" - i są polskie litery! Tyle tylko, że NADAL NIE MOŻNA PISAĆ POLSKIMI LITERAMI Jeśli wpisze się w poście polskie litery, wogóle ich nie pokazuje
Może ktoś wie co dalej?
[edit]
Może wsadzić gdzieś: <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> ??? |
Ostatnio zmieniony przez warna 28-04-2006, 19:54, w całości zmieniany 1 raz |
|
|
|
|
Bigbluee
Posty: 52
|
Wysłany: 12-05-2006, 17:21
|
|
|
To teraz pytanie od drugiej strony. Jak podczas instalacji skonfigurować MYSQL aby nie wystąpiły takie problemy? Jakaś newralgiczna komenda lub parametr ? |
|
|
|
|
Crack
Pomógł: 136 razy Posty: 1442
|
Wysłany: 12-05-2006, 19:22
|
|
|
Najbezpieczniej jeszcze przed instalacją forum zmodyfikować plik mysql4.php aby wysyłał do serwera SET NAMES latin2 i ustawić kodowanie bazy danych na latin2_polish_ci albo latin2_general_ci. |
_________________ [ DumpLoader 1.0 ] [ Spider Friendly 1.3.12 Google Sitemaps 1.4 ]
[ Tanuki: recenzje anime | forum ]
|
|
|
|
|
Bigbluee
Posty: 52
|
Wysłany: 12-05-2006, 23:22
|
|
|
Crack napisał/a: | Najbezpieczniej jeszcze przed instalacją forum zmodyfikować plik mysql4.php aby wysyłał do serwera SET NAMES latin2 i ustawić kodowanie bazy danych na latin2_polish_ci albo latin2_general_ci. |
Dodałem to w mysql4.php
Kod: | mysql_query("set names 'latin2'",$this->db_connect_id); | i teraz jest tak:
Kod: |
if( $this->db_connect_id )
{
if( $database != "" )
{
$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;
}
}
return $this->db_connect_id;
} |
Teraz poprawnie wysyła zawartośc postów do mysql. Dzieki za pomoc. Teraz to już chyba kazdy sobie poradzi z krzakami, bo już wszytskie mozliwe warianty krzaków i ich likwidacji zostały omówione |
|
|
|
|
Sajmon
Posty: 22
|
Wysłany: 17-05-2006, 20:02
|
|
|
To spróbuj
config.php ma mieć wpis
a w db/mysql4.php
znajdź
Kod: | $dbselect = mysql_select_db($this->dbname); |
i zaraz za tym wstaw
Kod: | mysql_query('SET NAMES latin2', $this->db_connect_id);
mysql_query('set charset latin2', $this->db_connect_id); |
W tej chwili została poprawiona baza 95MB bez żadnych zrzutów/wrzutów i kombinacji. |
|
|
|
|
chelloPL
Pomógł: 413 razy Posty: 2544
|
Wysłany: 21-05-2006, 16:21
|
|
|
UWAGA: kilka osób proponowało dodanie do pliku mysql4.php kodu:
Kod: | mysql_query("set names 'latin2'",$this->db_connect_id); |
W specyficznych sytuacjach powoduje on błędy przy pisaniu postów i dodawaniu wpisów do tabel _search*
Dlatego proszę się nie dziwić, że nagle przestało działać forum z tego powodu. Nie jest to prawidłowe rozwiązanie problemu, lecz próba jego obejścia (która z tego co widzę, jedno naprawia, a drugie psuje). |
_________________ Zanim napiszesz do mnie na GG/PW, koniecznie przeczytaj zasady.
Sygnaturka to nie tablica z ogłoszeniami! PAMIĘTAJ o tym! Nadużywanie i celowe reklamowanie stron jest ZABRONIONE i karalne!
Gość, a czy Ty nie masz sobie nic do zarzucenia? |
|
|
|
|
gfox
Posty: 8
|
Wysłany: 31-05-2006, 22:32
|
|
|
Poradzilem sobie.. co prawda w sposob chamski i bezczelny.. ale dziala
Znalazlem dysk na ktorym byl stary serwer i.. skopiowalem pliki bazy (MYD, MID, frm) do katalogu nowego serwera.
Smiga :] |
Ostatnio zmieniony przez chelloPL 08-10-2006, 17:04, w całości zmieniany 1 raz |
|
|
|
|
micek
Posty: 5
|
Wysłany: 08-06-2006, 10:41
|
|
|
problem już rozwiązałem
kopia bazy zrobiona przez forum zakodowana była w iso (ą -±)
nowey serwer (webd.pl) domyslnie kodowanie w phpmyadminie miał ustawione na latin2_general_ci (na poprzednim serwerze latin1_swedish_ci)
baze wgrałem ręcznie i przed każdą porcją zapytań dałem
Kod: |
SET NAMES 'utf8';
SET CHARACTER SET 'utf8';
SET SESSION collation_connection = 'latin2_general_ci';
|
gdzie:
SET NAMES 'utf8'; - kodowanie zrzutu bazy
SET CHARACTER SET 'utf8'; - kodowanie zrzutu bazy
SET SESSION collation_connection = 'latin2_general_ci'; - domyślne kodowanie serwera mysq
w moim przypadku pomogło, zaznaczam, że baza była wgrana ręcznie (kopiowane i wklejane z editplusa) ponieważ dbloader nie działa, a phpmyadmin pobierając plik (nawet małe pliki z ilością 2000 tys zapytań) z zrzutem albo pomijał wpisy (podobnie jak dbloader ? może miał za dużo naraz)
albo zmieniał kodowanie pomimo z góry narzuconego w pierszwych trzech linijkach
pozdrawiam i życze powodzenia |
|
|
|
|
jochen
Posty: 27
|
Wysłany: 15-06-2006, 15:17
|
|
|
Znalazłem sposób
Do przeprowadzenia tej czynności potrzebne są:
- GŻEGŻÓŁKA (PROGRAM DO KONWERSJI)
- NOTATNIK
1. Kopie bazy danych otwieramy GŻEGŻÓŁKĄ i sprawdzamy typ kodowania (u mnie był UTF-8)
2. Zmieniamy ręcznie w notatniku lierki małe i DUŻE na polskie odpowiedniki np.æ na "ć".
3. Konwertujemy programem na ISO 8859-2 (Europa środkowa)
4. Kompresujemy bazę do formatu *.gz
5. Wgrywamy na serwer do katalogu \dbloader
6. Uruchamiamy dumploadera i wgrywamy
7. Forum działa i ma piękne polskie literki |
|
|
|
|
Raknor
Pomógł: 197 razy Posty: 1180
|
Wysłany: 19-06-2006, 02:57
|
|
|
Mnie pomógł ten post.
szarywilk napisał/a: | Jestem bliski rozwiązania tego problemu - proszę o pomoc!
Pomógł mi ten post:
Cytat: | Witam!
Napisałem o tym już na forum phpbb by Przemo!
Brak polskich znaków występuje na serwerach z nowymi wersjami MySQL oraz phpMyAdmin.
Aby mieć polskie znaki zamiast znaków zapytania należy:
1. Wgrać w całości bazę danych na serwer, jeżeli baza już jest to ok.).
2. Ustawić w phpMyAdmin:
- język: Polish (pl-utf-
- system porównań dla połączenia MySQL: utf8_general-ci
- dla konkretnej tabeli - metoda porównywania napisów: utf8_general-ci
3. Generalnie chodzi o polskie znaki w tabeli phpbb_post_text oraz phpbb_topisc (tabele odpowiedzialne za treść postów oraz ich tytuł) Oczywiście można zmienić wszystkie tabele np. odpowiedzialne za tematy for, użytkowników itp.).
4. W pliku sql gdzie mamy cały zrzut bazy danych odszukujemy zrzuty w/w tabel. Tworzymy nowy plik o nazwie post_text (oczywiście nazwa dowolna) i kopiujemy do niego z pliku sql dane tabeli phpbb_post_text. TYLKO DANE BEZ STRUKTURY TABELI. Analogicznie do każdej tabeli nowy plik.
5. Otwieramy taki plik w edytorze pozwalającym na konwersje znaków (polecam EdHTML). Ustawiamy taki sposób kodowania aby polskie litery miały ogonki (ISO-8859-2).
6. Teraz nadszedł czas na zmianę na utf-8 (znaki Unicode). W opcjach programu wybieramy znajdź/zmień ewentualnie zastąp. W polu "znajdź" wpisujemy np. ą a w polu "zmień na" wpisujemy & # 261; (bez spacji) Klikamy OK i wszystkie ą zostają zmienione.
Kody polskich znaków w systemie Unicode znajdziecie m.in na http://www.kurshtml.boo.pl/skrypty/unicode.html
7. W ten sposób zmieniamy wszystkie polskie znaki na znaki Unicode.
Przykład: Zdanie z polskimi znakami: "Już będą wyświetlane prawidłowo."
Po naszej zmianie wygląda: Ju& #380; b& #281;d& #261; wy& #347;wietlane prawid& #322;owo.
8. Wchodzimy do phpMyAdmin, czyścimy tabelę w której chcemy dokonać zmian i za pomocą zakładki SQL wrzucamy (kopiujemy) zawartość naszego pliku (już ze znakami Unicode). Ważne aby przed przystąpieniem do uzupełniania tabeli wyczyścić ją a nie nadpisywać.
9. Przeglądając zmienioną tabelę widzimy już w niej znaki Unicode a na naszym forum są już polskie znaki!
Działa w 100%. Sprawdzałem na dwóch serwerach na których właśnie po przejściu na nowe wersje
programów na forach występowały znaki zapytania. |
Tak jak pisze, wszędzie w phpmyadmin mam utf8. Bazę danych przekonwertowałem ręcznie na utf8 za pomocą tablicy kodowej, "wgrałem" - i są polskie litery! Tyle tylko, że NADAL NIE MOŻNA PISAĆ POLSKIMI LITERAMI Jeśli wpisze się w poście polskie litery, wogóle ich nie pokazuje
Może ktoś wie co dalej?
[edit]
Może wsadzić gdzieś: <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> ??? |
Wszystko ręcznie wklepywane (phpMyAdmin -> Bazy danych -> "twoja_baza" -> SQL (zakładka)):
Mój przepis wygląda tak:
1) Wykonać zrzut bazy z poziomu Forum (plik bazy znajduje się w /db/db_backup/, system kodowania bazy Windows-1250)
2) W nowej bazie ustawić w phpMyAdmin:
- język: Polish (pl-utf-8)
- system porównań dla połączenia MySQL: utf8_general_ci
3) Wklepać przez phpMyAdmin ze zrzutu bazy wszystkie CREATE TABLE do nowej bazy
4) Zmienić w phpMyAdmin (nowej bazy) wszystkie tabele na utf8_general_ci
5) Otworzyć zrzut bazy przez program EdHTML v5.0, zmienić system kodowania na ISO 8859-2 (Dokument -> System kodowania) i zapisać (pojawią się polskie znaki ę,ó,ą,ś,ł,ż,ź,ć,ń).
6) Teraz trzeba zmienić system kodowania zmodyfikowanej bazy z ISO 8859-2 na Unicode. W moim przypadku bazę edytowałem programem Programmer's Notepad 2 v0.6.1 (Find -> Replace -> Find watch:(Znajdź:) Replace with:(Zamień z:) i kliknąć Replace All(Zamień wszystko)). Gdyż windowsowski notatnik jak i ten EdHTML nie odróżniał wielkich od małych liter. Czyli gdy dajesz żeby Ci zmienił np. znak Ł na Ł (powinien być jeszcze średnik na końcu, ale po dodaniu ten kod zmienia się w Ł) to zmieniał wszystkie Ł i ł na Ł
7) Wklepać teraz wszystkie INSERT INTO do nowej bazy
Ale pomimo tego co zrobiłem mam pytanie. Czy podzielenie zrzutu bazy na dwie części daje coś w dbloaderze?
Pierwsza część od [CREATE TABLE phpbb_admin_notes] do pierwszego średnika przed [CREATE TABLE phpbb_posts_text_history].
Druga część od [CREATE TABLE phpbb_posts_text_history] i do samego końca.
Edit:
Znalazłem przypadkiem ciekawe narzędzie, może sie przydać -> FOX Edit |
Ostatnio zmieniony przez Raknor 18-12-2006, 05:37, w całości zmieniany 5 razy |
|
|
|
|
Gadatliwa Kasia
|
|
|
|
Dwako
Posty: 1
|
Wysłany: 11-10-2006, 11:49
|
|
|
Witam. Po kilku godzinach żmudnych, niewiele wnoszących prób udało mi się w końcu zaimportować poprawnie bazę danych z polskimi litrerkami.
Server z którego exportowałem to ovh.org (Metoda porównywania napisów - latin1_swedish_ci).
Importowałem do webd.pl (Metoda porównywania napisów - latin2_general_ci).
- wyexportuj bazę danych za pomocą forum (zaloguj się do panelu administratora, z menu wybierz Kopia zapasowa i Wykonaj kopię teraz)
- w folderze /db/db_backup/ powinien utworzyc sie nowy plik. Pobierz go na dysk.
- zaloguj się do PhpMyAdmin, usuń dotychczasowe tabele w bazie (jesli wcześniej je probowałeś importować). Na stronie głównej Zmień System porównań dla połączenia MySQL na latin2_general_ci.
- kliknij na istniejaca baze danych w menu i wybierz Import. Podaj Lokalizacja pliku tekstowego dla kopi bazy ktora sciągłeś na dysk, zmień Zestaw znaków dla pliku na latin2 i kliknij Wykonaj.
W moim przypadku zadziałało. Dodam, że gdy importowałem plik na serverze zainstalowany był phpMyAdmin 2.8.2.4, a MySQL w wersji 4.1.21-standard-log.
Powodzenia życzę |
_________________ www.rozwojduchowy.net |
|
|
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Dodaj temat do Ulubionych Wersja do druku
|
Kopiowanie wszelkich treści zawartych na forum, modyfikacji oraz instrukcji bez zgody administracji i autorów tematów/postów zabronione!
Powered by phpBB modified by Przemo © 2003 phpBB
| Strona wygenerowana w 0,17 sekundy. Zapytań do SQL: 13 | |
|
|