Skocz do zawartości
PelzaK

[php, Mysql]kodowanie Znaków

Rekomendowane odpowiedzi

Witam.. ostatnio postanowiłem dodać do swojej stronki obsługę mySQLa... wcześniej komentarze, artykuły etc, były oparte na plikach tekstowych. No i tu zaczął sie problem...

 

kodowanie na stronce mam niestety CP1250, na razie nie chcę zmieniać bo bym musiał każdy artykuł przerabiać, poza tym wszystkie przeglądarki, nawet linuxowe sobie z tym radzą... więc szkoda zachodu żeby dogonić standardy - sztuka dla sztuki... Poza tym mój edytor (PHP Designer 2006), którym się posługuje, nie wiedzieć czemu wciąż nie ma kodowania latin2 czy iso-8859-2 jak kto woli.. mimo iż na forum często użytkownicy domagali się wprowadzenia tego kodowania...

 

W PHPmyAdmin jest notka o tym iż METODA PORÓWNYWANIA NAPISÓW jest ustawiona dla tabel na latin1_general_ci ogólnie... Dla każdej tabeli ustawiłem tą metodę porównywania na cp1250_general_ci , żeby było zgodne z kodowaniem mojej strony... windows-1250.

 

Sam phpmyadmin działa w kodowaniu UTF-8 i za jego pomocą wprowadzałem stare dane do mySQLa.. polskei czcionki były iwdziane i w phpmyadminie i na mojej stronce.. było ok...

 

było ok do czasu aż nie wprowadziłem ze stronki nowego komentarza zawierajacego polskie znaczki... oczywiście pojawiły się znaczki zapytania ?????. Tego to już nie rozumiem.. mam kodowanie na stronie windows1250, w SQLu ustawione jest to porównywanie napisów na cp1250.. odczytywać tabelę się da z polskimi znaczkami.. a zapisywać nie...

 

Połączenie z bazą z PHP realizuję w ten sposób...

$conn = mysql_connect("localhost","login","pass") or die('nie mozna sie polaczyc');	 mysql_select_db("pelzakdb",$conn);	 $sql = "set charset cp1250";	 mysql_query($sql);
czyli zmieniam dodatkowo kodowanie starndardowe latin1 na cp1250 - to znalazłem gdzieś na jakimś forum, żeby przestawić sposób kodowania bazy po połączeniu....

 

no i lipa... nie mam pojęcia co z tym dalej zrobić... ma ktoś jakiś pomysł? bo rozwaliłem stronkę i teraz leży niezdatna do użytkowania...

 

//- EDIT -----------------------------------------------------------

 

ok problem rozwiązałem jak zwykle chwile po założeniu tematu.. a wcześniej 6h siedzenia nad crapem... i to dzięki jakiemuś czeskiemu forum :D

 

po połączeniu z bazą danych trzeba zmienić nie CHARSET tylko NAMES... t powoduje zmianę zarówno danych wychodzących jak i wchodzących do bazy danych...

$sql = "set names cp1250";	 mysql_query($sql);

można zamknąć, chyba, że ktoś ma coś do dodania... :wink:

Edytowane przez PelzaK

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Sam kiedyś tego szukałem i znalazłem rozwiązanie na forum Przemka Matogi przemo.org

 

Trzeba dopisać poprawkę do bazy, którego poprawi kodowanie. Robiłem to już dawno podczas

eksportu i importy bazy forów. Przez inne ustawienia MySQL'a miałem znaki zapytania zamiast polskich liter.

 

Jestem w trakcie szukania :wink:

 

UPDATED:

 

http://www.przemo.org/phpBB2/forum/viewtopic.php?t=17648 - drugi post i dalej

Edytowane przez Grimlock

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Witam.. ostatnio postanowiłem dodać do swojej stronki obsługę mySQLa... wcześniej komentarze, artykuły etc, były oparte na plikach tekstowych. No i tu zaczął sie problem...

Pelzak - jak to mala baza to polecam porzucic MySQL i luknac w strone SQLite - obsluguje wszystie rzeczy tak jak mysql z tych prostych, a jest poprostu 5x prostsze w instalacji i utrzymaniu i 4x szybsze od Mysql i 5x pod postgresa ;]

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

tylko że server stoi u znajomego w domu, na którym działa parenaście innych rzeczy :)

 

w trakcie pisania tego posta w mój budynek 15 piętrowy chciał uderzyć binladen samolotem :blink:.. aż mi sie nogi zaczęły lekko uginać jak sie szyby zatrząsły od huku silników, ktore słychać było zaczęły przerywać... .. Nie ma bata.. ja już nie chce mieszkać w najwyższym budynku w promieniu kilku kilometrów... :mur:

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

ale w php5 sqlite jest wkompilowane domyslnie w samo php - nie trzeba nic doinstalowywac ;)

Polecam Ci bo naprawde jest to SUPER technologia - przyswaja sie ja doslownie pare minut i masz zarabista funkcjonalnosc :)

Edytowane przez Yacho

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

a mySQL nie jest przyswajalny? Pozatym sam mySQL nie jest tu problemem a kodowanie znaków :)

 

Poza tym patrzę na dokumentacje.. i widzę praktycznie ten sam język.. w końcu tak czy siak to SQL... :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

hym no tak - wlasnie o to chodzi ze ten sam jezyk - ale do malych projektow trzeba utworzyc baze dodac osobnego usera przypisac mu prawa dumpy robic phpmyadminem.... a w SQLite przechowujesz wszystko w jednym pliku... (SQLite ma w domysle zastapic system plikow php - otwierasz baze w pliku i wykonujesz na niej komendy SQL i to wszystko zapisuje sie do pliku jak do bazy.... nie trzeba juz fopen fwrite itp - uwazam ze SQLite bedzie odpowiedniejszy od MySQL wszedzie tam gdzie mamy jednego uzytkownika majacego dostep do bazy i nie musisz sie bawic z rozdzielaniem uprawnien na warstwie bazy danych

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

wybacz ale Cię nie rozumiem :). Dodaniem nowego user zajał się admin serva.. i trwało to może 30 sekund... Ja nawet nic o tym nie wiedziałem. W mySQLu też wykonujesz zapytania a co mne to interesuje kto i co to obbiera.. wysyłamzapytania... dostaję odpowiedź :). Pozatym w kazdej chwili mogę zmienić server bo mySQL jest wszędzie dostępny :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

no wlasnie SQLite tez jest dostepny wszedzie gdzie jest php5 - co do MySQLa - jak masz wiekszy projekt i masz np sklep internetowy - admin ma inne przywileje niz user - wiec na poziomie php robisz mu uprawnienia ale wygodnym i bezpiecznym sposobem jest stworzenie adminowi i userom osobnych kont w MySQL - wtedy nawet jesli zrobiles blad uzywajac nieumiejetnie php nie dojdzie do naruszenia bazy

 

sęk w tym ze wiekszosc malych stron nie korzysta z tego typu zabawek i sa one zbedne - w php wtedy kiedy nie masz dostepu do bazy danych uzywalo sie plikow - i tak masz plik z 100 000 linii i chcesz wyszukac w nim jedna czy dwie musisz pobrac wszystkie i filtrowac - jest to niepraktyczne i wolne... wlasnie dlatego w PHP5 wymyslono SQLite - interfejs obsługi bazy danych gdzie baza jest pojedynczym plikiem ktory powstaje w systemie plikow - SQLite nie wymaga nic poza standardowa instalacja PHP pozwala ci uzywac siebie jako bazy danych lecz zamiast wielkiego serwera dzialajacego i zzerajacego zasoby - po stronie serwera jest jeden plik...

 

nie mowie ze SQLite jest do wszystkiego ale jesli przebudowujesz swoj homepage z plikow na baze to MySQL jest wytaczaniem armaty na komara :)

 

(ta dyskusje potraktuj jako luzne sugestie - nie proboje Cie na siłe przekonac - uwazam tylko ze jesli mozna skorzystac w dokladnie ten sam sposob z rzeczy ktora jest mniejsza wydajniejsza i wygodniejsza w pozniejszej eksploatacji to nalezy to rozwazyc - ja tylko chcialem zwrocic twoja uwage w ta strone - thats all)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

a myslisz ze mySQL w czym trzyma dane jak nie w pliku? :) To też jest plik po stronie servera...

 

I czy wytaczeniem armaty to nie wiem... Po co mam sie ograniczać skoro mySQL jest banalny w obsłudze... Podobnie jakbym kupił auto które ma na liczniku 280km/h.. i tak tyle nie pojadę po polskich drogach, co nie znaczy że to przesada kupować takie auta :)

 

Jest wiele róznych baz danych.. mySQL jest chyba najbardziej powszechny.. a jego szybkość jest na tyle duża że dobrze to działa. Poza tym nie wiem czy sql lite jest dużo szybszy od mysqla.. wszystko zalezy od rozmiaru bazy.

Edytowane przez PelzaK

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...