Skocz do zawartości

Wyszukiwanie w bazie PSQL


wariusz

Rekomendowane odpowiedzi

Witam.

Problem jest następujący podczas gdy wpisuje w formularzu hasło do wyszukiwania z polskimi znakami to pojawia się komunikat błędu:

"invalid byte sequence for encoding "UNICODE": 0xe62527".

Bez polskich znaków nie mam problemu zmienna która to zapisuje w php dobrze zapisuje dane słowo bo je później wypisuje na stronie.

Kodowanie Unicode jest jedynym jakie mogę wybrać przy tworzenia bazy danych ale to chyba nie problem bo w bazie mam polskie znaki. Więc nie bardzo wiem gdzie tkwi problem. Zmienna zapisuje dane słowo prawidłowo baza danych ma odpowiednie kodowanie - przynajmniej tak mi się wydaje. A jeśli się mylę mam nadzieje że szybko mnie ktoś wyprowadzi z błędu.

matematyka video - korepetycje z matematyki bez wychodzenia z domu
Odnośnik do komentarza
Udostępnij na innych stronach

Należy dostosować kodowanie zapytań w PHP do kodowania ustawionego dla bazy danych.

Zainteresuj się funkcją https://php.net/manual/pl/book.iconv.php oraz prawidłowym wyborem "Encoding" przy zapisywaniu plików dla wybranego kodowania znaków.

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Tak, ale dane wysyłane do bazy muszą być zgodne z kodowaniem ustawionym dla bazy inaczej będziesz miał krzaki.

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

To nie do końca jest tak:

Bo może być taka sytuacja że baza danych jest UTF8 a ty z nią "gadasz" za pomocą latin2 , tyle tylko że baza danych musi wiedzieć jakie kodowanie jest używane.

Mysql w takim przypadku po prostu zapisał by jak leci a Ty sie potem martw jak zrobisz backup a potem masz krzaki ;)

Do przeczytania:

https://www.php.net/manual/en/function.pg-client-encoding.php

https://www.php.net/manual/en/function.pg-s...nt-encoding.php

W przypadku @wariusz

wystarczyło sprawdzić co zwraca pg-client-encoding i ustawić taki jaki używa strona

dzięki za sugestie jednak to nie funkcja iconv, ale pg_set_client_encoding($db_handle,'Latin2'); ta funkcja odpowiada za ustawienie odpowiedniego kodowania w bazie, jakby ktoś potrzebował.

to nie jest tak że pg_set_client_encoding coś tam ustawia po stronie bazy , ja bym to raczej nazwał poinformowaniem bazy w jakim kodowaniu bedą nadchodzić zapytania , jezeli uzytkownik używa Latin2 a naza jest utf8 to musi wykonać

pg_set_client_encoding($db_handle,'Latin2');

Jezeli baza by była latin2 a strona używa utf8 to

pg_set_client_encoding($db_handle,'Utf-8');

I jeszcze taki link

https://www.network-theory.co.uk/docs/postg...nt.html#Table-2

wszystkie możliwe kombinacje bazy danych i klienta

Odnośnik do komentarza
Udostępnij na innych stronach

@Mysql w takim przypadku po prostu zapisał by jak leci a Ty sie potem martw jak zrobisz backup a potem masz krzaki

No o to mi chodziło, że zdecydowanie lepiej jest mieć zgodność kodowania zapisywanych danych z kodowanie bazy.

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 miesiąc temu...

Witam ponownie powrót do tematu chociaż trochę w innym stylu.

Na stronie głównej zrobiłem wyświetlanie aktualności ale takich które są pobierane z bazy danych i jak wpiszę www.matma.rybnik.pl to jest problem wyświetlają się źle polskie znaki. Jednak jak skopiuje plik index.php i zapisze go pod nazwą np. kopia.php to wszystko wyświetla się dobrze nie rozumiem dlaczego tak się dzieje??

w kopia.php ustawiam kodowanie uft-8 plik zapisany jest też w tym formacie a pg_set_client_encoding też uft-8 i wtedy tylko dla pliku kopia.php wyświetla się wszystko ok, ale jak skopiuje ten sam plik i nazwę go index.php to wszystko się wali i źle wyświetla z czym to może mieć związek??

matematyka video - korepetycje z matematyki bez wychodzenia z domu
Odnośnik do komentarza
Udostępnij na innych stronach

ale co sie "nie teges" wyswietla kod html statyczny z pliku czy dane z bazy ???

Jak kopiujesz plik ? Czy pliki są identyczne jezeli chodzi o ilosc bajtów, MD5 itp. czy są binarnie takie same a nie podobnie wygladające ?

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności