Strona 1 z 2

problem z polskimi literami - krzaki - na host.sk

: 26 kwietnia 2006, 23:39
autor: szarywilk14
Od paru miesięcy mam forum na host.sk. Wszystko chodziło do niedawna dobrze, gdy nagle przy polskich literach pojawiły się jakieś śmieci, i to na całym forum! Wygląda to tak:
Ksi¹¿ki, pisma, ³¹cza

RĂłznice miĂŞdzy...
Co to do jasnej chol*** jest?? Co to za śmieci to "Â", "Ş"?? Jak to naprawić? Bardzo zależy mi na odzyskaniu tych danych i przywróceniu forum do użyteczności, proszę więc o pomoc.

[edit]
Zrobiłem jedną rzecz - ściągnąłem kopię zapasową bazy danych przez panel aministracyjny - w edytorze te śmieci są też widoczne, jednak po zapisaniu pliku w kodowaniu "western european" śmieci znikają. Dodam że oryginalny plik jest chyba w kodowaniu "utf8". Co z tym dalej zrobić?

[edit]
Żeby było ciekawiej, przy odtwarzaniu bazy danych w panelu administracyjnym wyskakuje błąd:
Error importing backup file

DEBUG MODE

SQL Error : 1062 Duplicate entry 'wdzieczny' for key 1

INSERT INTO phpbb_search_wordlist (word_text, word_id, word_common) VALUES('wdzieczny', '779', '0')

Line : 980
File : admin_db_utilities.php
podobny błąd przy importowaniu bazy w phmyadmin:
Błąd

zapytanie SQL:

INSERT INTO phpbb_search_wordlist( word_text, word_id, word_common )
VALUES (
'wdzieczny', '779', '0'
);

MySQL zwrócił komunikat: Dokumentacja
#1062 - Duplicate entry 'wdzieczny' for key 1

: 27 kwietnia 2006, 15:24
autor: phpBB Assistant
Sprawdź kodowanie na serwerze. Ściągnij sobie program np. EditPlus2 bądź w notatniku otwórz bazę danych i zmień znaki na polskie. Potem taką bazę odtwórz w phpMyAdmini'e (zakładka SQL).

: 27 kwietnia 2006, 16:41
autor: szarywilk14
Tylko jak zmienić te znaki na polskie? Ręcznie czy konwertując plik w jakiś sposób? No i co z tymi błędami, które wyskakują podczas odtwarzania bazy danych?

Poza tym, w phpmyadmin jest takie coś: " System porównań dla połączenia MySQL" - ustawione mam "utf8_polish_ci".
I jeszcze - też w phpmyadmin przy imporcie bazy danych podaje się zestaw znaków dla pliku - co tam powinno być? (ustawione domyślnie jest utf8).

: 27 kwietnia 2006, 17:21
autor: phpBB Assistant
szarywilk14 pisze:Tylko jak zmienić te znaki na polskie? Ręcznie czy konwertując plik w jakiś sposób? No i co z tymi błędami, które wyskakują podczas odtwarzania bazy danych?
Ręcznie musisz to zmienić - tak będzie najlepiej. A co do tych błędów to w jaki sposób odtwarzasz bazę danych? Mam nadzieję, że ręcznie w zakładce SQL. Każde zapytanie jakie wykonujesz musi miec na końcu znak: Wtedy błędów nie będzie. Pamiętaj, że nie możesz jednego zapytanie wykonać kilka razy. Usuń najlepiej całą bazę i od nowa ją wgraj.

szarywilk14 pisze:Poza tym, w phpmyadmin jest takie coś: " System porównań dla połączenia MySQL" - ustawione mam "utf8_polish_ci".
I jeszcze - też w phpmyadmin przy imporcie bazy danych podaje się zestaw znaków dla pliku - co tam powinno być? (ustawione domyślnie jest utf8).
Tutaj znajdziesz ważne informacje odnośnie kodowania: http://www.przemo.org/phpBB2/forum/view ... 48&start=0

: 27 kwietnia 2006, 18:12
autor: szarywilk14
Dzięki za informacje.
Ręczna zamiana to będzie katorga, ale co poradzić... Z drugiej strony, jak zapisywałem ten plik z "krzakami" w EditPlusie w formacie "western european" to robiło się chyba OK, krzaki znikały...
Odtwarzałem (a raczej - próbowałem odtwarzać) po prostu przez "Import" w phpmyadmin, tam wklepywałem nazwę pliku i to wszystko. Teraz jak patrze na te wszystkie instrukcje odtwarzania, to to jest jednak chyba trochę bardziej skomplikowane... Problem w tym, że w phpmyadmin po lewej, tam gdzie powinna się pojawić baza danych, nie pojawia się nic, tzn. ta lewa ramka się nie ściąga i nie mogę zaznaczyć bazy (http://db.host.sk - może to tylko ich problem).

: 27 kwietnia 2006, 18:19
autor: phpBB Assistant
szarywilk14 pisze:Odtwarzałem (a raczej - próbowałem odtwarzać) po prostu przez "Import" w phpmyadmin, tam wklepywałem nazwę pliku i to wszystko.
Być może dlatego występowały błędy.

szarywilk14 pisze:Problem w tym, że w phpmyadmin po lewej, tam gdzie powinna się pojawić baza danych, nie pojawia się nic, tzn. ta lewa ramka się nie ściąga i nie mogę zaznaczyć bazy (http://db.host.sk - może to tylko ich problem).
Serwer widocznie ma nową wersję phpMyAdmin'a. I nie możesz zobaczyć całej bazy danych (w starych wersjach zawsze klikało się na nazwę bazy), w nowej musisz kliknąć w "Struktura" - na górze.

: 28 kwietnia 2006, 19:55
autor: szarywilk14
Jestem bliski rozwiązania tego problemu - proszę o pomoc!

Pomógł mi ten post:
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- 8)
- 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?

: 28 kwietnia 2006, 22:20
autor: phpBB Assistant
Problemów z tym jest dużo. Sprawdź kodowanie w pliku lang_main.php, powinno byc iso-8859-2 :) Podaj najlepiej adres forum.

: 29 kwietnia 2006, 01:17
autor: szarywilk14
Może w tym jest właśnie problem że jest iso-8859-2 - tzn. jeśli wszędzie jest utf8:
System kodowania znaków dla MySQL: UTF-8 Unicode (utf8)
System porównań dla połączenia MySQL: utf8_polish_ci (albo utf8_general_ci)
W bazie danych polskie litery też są w utf8 - czyli coś w stylu: - więc teoretycznie, jeżeli wpisuje w poście polskie litery, to żeby się nie gryzło musi się to zapisać w bazie danych w formacie utf8 ?? Czy całe forum może wogóle chodzić na tym utf8 ? A jeśli tak, to w jakich plikach trzeba to zmienić?

: 29 kwietnia 2006, 11:11
autor: phpBB Assistant
szarywilk14 pisze:- więc teoretycznie, jeżeli wpisuje w poście polskie litery, to żeby się nie gryzło musi się to zapisać w bazie danych w formacie utf8 ?? Czy całe forum może wogóle chodzić na tym utf8 ? A jeśli tak, to w jakich plikach trzeba to zmienić?
Może być format utf2 w bazie danych - to nie ma znaczenia. Jeżeli na forum piszesz posta z polskimi znakami np. ś, ę i nie wyświetlają się ono prawidłowo to masz naprawdopodobniej złe ustawione kodowanie znaków. Jaki masz serwer? Podaj najlepiej adres WWW do forum. W pliku lang_main.php sprawdź kodowanie jakie masz ustawione.

Spróbuj na dysku utworzyć plik o nazwie: extension.inc a w nim wklej taki kod:

Kod: Zaznacz cały

<?php

/*************************************************************************** 

 *                               extension.inc

 *                            -------------------                         

 *   begin                : Saturday, Feb 13, 2001

 *   copyright            : (C) 2001 The phpBB Group       

 *   email                : support@phpbb.com                           

 *                                                         

 *   $Id: extension.inc,v 1.5 2002/04/04 11:52:50 psotfx Exp $

 *                                                           

 *

 ***************************************************************************/

header('Content-type: text/html; charset=iso-8859-2');

if ( !defined('IN_PHPBB') )

{

die("Hacking attempt");

}



//

// Change this if your extension is not .php!

//

$phpEx = "php";



$starttime = 0;



?>
I zapisz go a następnie wrzuć na serwer.

Następny sposób. Jeżeli korzystasz z mysql a nie mysql4 to w pliku db/mysql.php znajdź:

Kod: Zaznacz cały

$dbselect = @mysql_select_db($this->dbname);
Kod możesz mieć trochę inny, ale będzie miał podobną budowę. I po takiej linii dodaj:

Kod: Zaznacz cały

mysql_query("SET character_set_client = latin1;");
mysql_query("SET character_set_connection = latin1;");
mysql_query("SET character_set_results = latin1;");
Wykorzystaj te sposoby i zobacz jak będzie działało forum. Na samym początku spradź te kodowanie w lang_main.php :) I podaj adres forum.

: 29 kwietnia 2006, 13:44
autor: szarywilk14
Dane mojego forum:

MySQL - 5.0.20
phpMyAdmin - 2.8.0.2
forum na http://www.host.sk
baza danych na http://db.host.sk
System kodowania znaków dla MySQL: UTF-8 Unicode (utf8)
System porównań dla połączenia MySQL: utf8_polish_ci
Polskie litery w bazie danych w kodzie utf8

Zaraz sprawdzę powyższe sposoby...

[edit]
"extension.inc" nic nie dało, polskich liter nie można wpisywać (tzn. można, ale po zapisaniu ich nie widzi - znikają zupełnie)

[edit]
w language/lang_polish/lang_main.php mam:
$lang['ENCODING'] = 'iso-8859-2';

[edit]
sposób z mysql.php też nie działa.

Podsumowując: na całym forum po zmianie polskich liter na utf8, pokazują się one prawidłowo. Jeśli napiszę posta z polskimi literami i wcisnę "podgląd" - to w podglądzie jest OK, jeśli "wyślij" to po wysłaniu polskie litery znikają, czyli np. wyraz "próba" wygląda tak: "pr" a np. wyraz "łąka" wogóle nie wygląda... :(

: 13 czerwca 2006, 15:37
autor: MajfA^
i jak w koncu? da sie to jakos naprawic?mam to samo(urywa slowa) i nie moge tego zrobic...

: 17 czerwca 2006, 14:05
autor: phpBB Assistant
i jak w koncu? da sie to jakos naprawic?mam to samo(urywa slowa) i nie moge tego zrobic...
Przeczytaj wszystkie moje posty w tym temacie i powinieneś znaleźć rozwiązanie. Korzystacie z jakiś zagranicznych serwerów i są problemy z wyświetlaniem PL znaków. Edycja bazy danych SQL w programie np. EditPlus i zmiana wszystkich znaków typu ? lubi innych na polskie w 100% zadziała. Taką bazę potem wgrywamy za pomocą phpMyAdmin'a, zakładka SQL (a starą oczywiście usuwamy).

: 19 czerwca 2006, 17:02
autor: MajfA^
Przeczytalem i probowalem te rozwiazania, ale bez rezultatu... Edytowanie postow nie jest rozwiazaniem poniewaz nie mam co edytowac, bo jak uzywam polskich znakow to urywa zdania do pierwszego slowa z ąęćźż np. zdanie: " nie mogę wpisywać polskich znaków" wyglada: "nie mog (reszty zdania nie ma, nawet jak reszta slow nie zawiera ążźćś)"

: 17 lipca 2006, 05:11
autor: nevada90
Mam ten sam problem co szarywilk i majfa... prosze o pomoc :(