Skocz do zawartości
Pecetowicz Forum komputerowe

phpBB2 by Przemo pracujące na UTF-8. Poradnik.


Rekomendowane odpowiedzi

Jeśli próbowałeś kiedyś zintegrować phpBB2 modified by Przemo to miałeś zapewne problem z bazą danych, phpBB nie pracuje w kodowaniu UTF-8 bądź z wyświetlaniem zintegrowanych elementów np. ostatnich tematów.

W temacie opiszę sposób modyfikacji skryptu aby pracował z kodowaniem UTF-8 w bazie i na stronie.

Uwaga. Poradnik pisany pod wersję skryptu 1.12.6. Jeżeli od początku używasz phpBB2 by Przemo w wersji 1.12.9 to Twoja baza zapewne posiada już polskie znaki i nie trzeba jej naprawiać.

Jeśli korzystasz ze modyfikacji Spider Friendly z katalogu includes wytnij pliki:

  • map.iso-8859-1.php
  • map.iso-8859-2.php

Oraz przy zamianie w PSPad zaznacz opcję pytaj przy zamianie i nie pozwalaj zmieniać w plikach od Spider Friendly.

Pamiętaj o kopii zapasowej gdyby coś poszło nie tak. Jeśli chcesz zmodyfikować skrypt na UTF-8 pierwsze co musisz zrobić to przekonwertować bazę danych na UTF-8 a dopiero później skrypt! 

Jak naprawić "krzaki" w bazie danych: Naprawa polskich znaków w bazie danych. "Krzaki". Poradnik.

1. Zamień każdy tekst z iso-8859-2 na utf-8 i masz gotowy poradnik pod utf8

Jedyna zmiana to taka że zawsze zapisujemy jako utf-8, i najważniejsze w bazie przed zaimportowaniem wykonaj zapytanie: WAŻNE !

ALTER DATABASE `nazwa_bazy` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Gdzie za nazwa_bazy wstawiamy nazwę bazy która wyświetla się po lewej stronie ( baza z forum )

Następnie zajmiemy się przerobieniem skryptu.

Potrzebne narzędzia to:

  • Gżegżółka
  • PsPad

Zaczniemy od samego przemyślenia co musimy zrobić:

  • Przekonwertować wszystkie pliki które mogą zawierać tekst z polskimi znakami
  • Drobna edycja ręczna kilku plików
  • Zamiana definicji kodowych stron na utf-8

Zaczynamy od konwersji Gżegżólką wszystkich plików forum do utf8

  • Zgrywamy wszystkie pliki forum do jednego katalogu
  • Przeciągnij cały katalog z plikami do okna Gżegżółki
  • W polu Maska wpisz: *.php;*.xml;*.htm;*.html;*.tpl;*.cfg;*.txt;*.sql
  • Zaznacz pole Wyszukuj uwzględniając podfoldery
  • Następnie na dole kliknij na przycisk Konwersja
  • W pierwszym polu wybieramy Automatyczny a w drugim Unicode UTF-8  Automatyczny >>> Unicode UTF-8
  • Klikamy na projekt >> ustawienia i odznacz 3 opcje:
  1. - Konwertuj znaczniki
  2. - Podstawiaj encje
  3. - Traktuj plik html jak xhtml
  • Kliknij OK i wciśnij Start, pliki zostaną przekonwertowane

Kolejny krok to odmiana wszelkich wystąpień innych kodowań w plikach na utf-8

  • Klikamy na Szukaj >> Szukaj / zamień w plikach
  • Wybieramy katalog z plikami forum w polu Zaznaczony katalog
  • W polu znajdź tekst wpisujemy: iso-8859-2
  • Zaznaczamy zamień na i wpisujemy utf-8
  • Odznaczamy pytaj przy zamianie
  • zaznaczamy dołącz podkatalogi
  • powtarzamy to dla szukanej frazy: iso-8859-1

Drobna edycja w plikach

Otwieramy plik includes/functions.php:
Szukamy:

function replace_encoded($text)

oraz tego co jest pod spodem i zmieniamy na:

function replace_encoded($text)
{
    global $lang;
    return ($lang['ENCODING'] == 'utf-8') ? $text : str_replace(
        array('ę', 'ó', 'ą', 'ś', 'ł', 'ż', 'ź', 'ć', 'ń', 'Ę', 'Ó', 'Ą', 'Ś', 'Ł', 'Ż', 'Ź', 'Ć', 'Ń'),
        array('e', 'o', 'a', 's', 'l', 'z', 'z', 'c', 'n', 'E', 'O', 'A', 'S', 'L', 'Z', 'Z', 'C', 'N'), $text
    );
}

otwieramy plik language/lang_polish/lang_main.php
znajdź:

setlocale(LC_ALL, 'pl');
@setlocale (LC_ALL, 'pl_PL.utf-8', 'pl_PL.latin2', 'pl_PL', 'pl', 'polish');

zamień na:

//setlocale(LC_ALL, 'pl');
//@setlocale (LC_ALL, 'pl_PL.utf-8', 'pl_PL.latin2', 'pl_PL', 'pl', 'polish');

Otwórz plik db/mysql4.php
Znajdź:

$dbselect = mysql_select_db($this->dbname);

Dodaj pod:

mysql_query('SET NAMES utf8 COLLATE utf8_unicode_ci', $this->db_connect_id);

I dopilnuj aby w config.php było:

$dbms = 'mysql4';
Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Założyciel

Ciekawy poradnik na pewno przyda się wielu osobom, dzięki za dodanie.

Odnośnik do odpowiedzi
Udostępnij na innych stronach

Problem wciąż nierozwiązany? Dodaj swoją odpowiedź

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ę
×
×
  • Dodaj nową pozycję...