Jak się robi stronę w PHP & MySQL z kodowaniem strony

0

Mam stronkę w PHP & MySQL, którą zrobiłem kiedyś jeszcze w Windowsie, z wiadomych względów jest tam wstawione w plikach PHP kodowanie :
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />
a nie:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
ponieważ w baza zakodowana jest w charset=windows-1250 czyli w memo mam wpisane "ą" czy "ś" (ogonki) a nie "?" czy "?" .

Teraz jak wpiszę w plikach PHP kodowanie charset=iso-8859-2 oraz przekonwerteruję bazę nacharset=iso-8859-2 , no to mam ze zrozumiałych względów na stronie bałagan.[ Zamiast "ą" mam "?" zamiast "ś" mam "?" itp. itd.]
Jak przekonwerteruję bazę na UTF-8 to jest źle.

Czy mam teraz bazę konwerterować? A może napisać jakąś funkcję która będzie konwerterowała z jednego na drugi ?
Proszę podpowiedzcie jak wy to robicie aby było dobrze?

Z góry dzięki za wszelkie informacje

// konwersja -> konwertować, nie konwerterować - Ł

0

Najprosciej?

  1. Zrob dump'a bazy, zapisz ja do pliku
  2. otworz plik w php, zapisz zawartosc do zmiennej $text;
  3. wywolaj win2iso($text)
  4. zapisz wynik do pliku i przywroc (zastap cala zawartosc bazy) "nowym" dumpem z poprawionym kodowaniem
    ================================================
function win2iso($text) {
    $replace = array('ą'=>"?",'ś'=>"?", 'ź'=>"Ľ", 'Ą'=>"ˇ", 'Ś'=>"?", 'Ź'=>"?");
    return strtr($text, $replace);
}

================================================
punkt 2 mozesz ominac i konwersje pliku wykonac np programem PL-Konwerter

win2iso() mozesz oczywiscie stosowac i przy kazdym pokazywaniu tekstow na strone z niej kozystac... ale to troche mija sie z celem ;)

0
Astronom napisał(a)

zrobiłem w Windowsie, z wiadomych względów

tzn z jakich, bo ja nie wiem ? :) :) :) :)

desperat, a ja zrobiłem troszke krótszą funkcję ;) właściwie to samo.

function iso($text)
{
    $text = strtr($text,"ąśźĄŚŹ" , "??Ľˇ??");
    return $text;
}

echo 'Tekst z krzaczkami ąśźĄŚŹ';
echo iso('Tekst bez krzaczków ąśźĄŚŹ');

0

Zawadzki14, moja funkcja w pierwowzorze miala znaczenie wiecej literek i zamieniala np ę na ę, ale racja w tym wypadku (win2iso) tablica jest zbedna ;)

0

Może się czepiam, ale nie lepiej od razu przejść na UTF? Przechodząc teraz z Win-1250 na ISO-8859-2 dalej zostajesz parę lat za standardem.

0
Adam.Pilorz napisał(a)

Może się czepiam, ale nie lepiej od razu przejść na UTF? Przechodząc teraz z Win-1250 na ISO-8859-2 dalej zostajesz parę lat za standardem.
Niestety, ale nie wszystkie edytory sobie dobrze radza z UTF, takze i php jesli chcesz porobic jakies kombinacje na stringach ma czasem problemy.
Gdyby php wpelni obslugiwal wchar'a i przy stringu $s = "Alą!" zwracal jego dlugosc 3 i $s{4} jako "!" to bylo by troszke lepiej
(choc moze mb_ sobie z tym radzi, ale mowie, wiekszosc tekstowych edytorow php z ktorymi mialem stycznosc nie radzi sobie dobrze z UTF8, a laczenie plikow UTF z normalnymi moze miec katastrofalne skutki np przy wysylaniu naglowkow :D)

0
  1. Co do edytorów - używam NSP w połączeniu z konwerterem gżegżółka - radzi sobie.
  2. Co do długości stringa 'Alą!' - trudno, żeby zwracał nieprawdziwą długość - w UTF taki string ma długość 5 i się tego nie zmieni (długość podawana jest w bajtach, nie znakach, które człowiek widzi na ekranie).
0
Adam.Pilorz napisał(a)

długość podawana jest w bajtach, nie znakach
No i wlasnie to mnie boli :/ Bo przyzwyczajenie ze pobierajac dlugosc stringa dostaje ilosc znakow robi swoje (przy programowanu jak operujesz na wchar czy char dostajesz ilosc znakow).
Ale znow zaczynamy ot :]

0

ja nie widzę powodów żeby przechodzić na UTF, dla mnie jest to teraz niewygodne, niepotrzebne, niewydajne, nieintuicyjne. Co innego jeśli robi się coś większego, coś co ma być dla różnych krajów

1 użytkowników online, w tym zalogowanych: 0, gości: 1