Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Kłopot z przesyłem znaków od bazy sql do php
blackstone
post
Post #1





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 19.03.2015

Ostrzeżenie: (0%)
-----



Stworzyłem sobie pewną stronę internetową ( na razie jest na moim kompie, obsługiwana przez Webserv) której część treści przechowywana jest w bazie danych. Mój problem polega na tym że zarówno w tej bazie w php my admin jak i na samej stronie polskie znaki zwyczajnie nie występują.

Dokładnie rzecz ujmując

W pliku który obserwuje problem mam tak ustawione kodowanie
  1. [..] <meta http-equiv="Content-Type" content="text/html;charset=utf-8" >[...]


a w bazie danych ( dokładnie mówiąc w konkretnej tabeli, nie wiem czy coś gdzieś indziej mogę zmienić ) wszędzie tam gdzie jest wiersz przechowujący tekst
ustawiłem kodowanie "utf8_polish_ci" i nie daje to żadnego rezultatu. Tam gdzie są polskie znaki jest znak zapytania albo "kwadracik a na dodatek ( tego to już zupełnie nie rozumiem) tytuł strony który też ma polskie znaki równierz nie jest czytany przez przeglądarkę. Wcześniej miałem ustawiony przez mój edytor tekstu do tworzenia stron:

  1. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">


Dodam tylko iż gdy w phpmyadmin przeglądam te treści to są one zapisane normalnie z polskimi znakami.
Nie wiem o co chodzi. Co mogę zrobić innego by naprawić tą sytuacje?
Słabo się orientuje w tym, proszę o pomoc. Pozdrawiam i z góry dzięki za odpowiedzi (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Tomplus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 883
Pomógł: 231
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


Być może wystarczy abyś dla połączenia z bazą danych ustawił:

mysql_set_charset($link, 'utf8');
Go to the top of the page
+Quote Post
blackstone
post
Post #3





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 19.03.2015

Ostrzeżenie: (0%)
-----



Ok, spróbuje. Ale muszę zapytać: do czego ma się odnosić się $link ? Ma być przypisana do jakiejś funkcji pobierające dane z bazy sql ?
Go to the top of the page
+Quote Post
kapslokk
post
Post #4





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


http://php.net/manual/en/function.mysql-set-charset.php
Wystarczy zajrzeć do dokumentacji.
Pierwszy parametr to charset, drugi to identyfikator połączenia z bazą, nie jest wymagany.

Ten post edytował kapslokk 30.10.2015, 10:33:38
Go to the top of the page
+Quote Post
Tomplus
post
Post #5





Grupa: Zarejestrowani
Postów: 1 883
Pomógł: 231
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


ten $link przydaje się gdy chcesz jednocześnie utworzyć więcej niż jedno połączenie, np. do bazy z innym kodowaniem.
Go to the top of the page
+Quote Post
blackstone
post
Post #6





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 19.03.2015

Ostrzeżenie: (0%)
-----


Dzięki za odpowiedzi.

Mam bardzo niejednoznaczną sytuację na stronie ( a właściwie stronach bo na razie z zrobiłem to na dwóch ). Mam dwie strony mojej społeczności online którą robię - j
jedna strona wypisuje nazwy założonych tematów a druga to strona wyświetlająca dyskusje w danym temacie. Na tych obydwu stronach kod zasadniczy obsługujący bazę
danych wygląda tak samo, to znaczy :




  1.  
  2. $base = mysql_connect('localhost','root','') or die('Brak połączenia z serwerem MySQL.<br />Błąd: '.mysql_error());
  3. $db = mysql_select_db('memory') ;
  4. mysql_set_charset('utf8');
  5.  


Efekt tego jest różny. Na stronie wyświetlającej listę tematów wszystko jest ok w 100% ( nic dodać nic ująć ) - tzn tytuły tematów i nicki ich autorów są poprawnie
zapisane z polskimi znakami. Natomiast na stronie wyświetlającej dyskusje po wstawieniu mysql_set_charset('utf8') zmieniło się tylko to że zamiast znakó zapytania
są jakieś inne: np. miało zły (miało zły) , PolakĂłw (Polaków) , duĹźo (dużo). Co mogę z tym zrobić ?


* Próbowałem wstawić do tej funkcji zmienne połączenia z bazą czyli $base a potem $ db tam gdzie w waszych przykładach była zmienna link ale wyskakiwały mi jedynie błędy.
Go to the top of the page
+Quote Post
viking
post
Post #7





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Na początek ustaw odpowiedni nagłówek (w PHP) bo być może serwer wysyła własny. W stopce mam cały artykuł o kodowaniu znaków. Poczytaj.
Go to the top of the page
+Quote Post
blackstone
post
Post #8





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 19.03.2015

Ostrzeżenie: (0%)
-----


Dziękuje za pomoc, jest już ok....przynajmniej częściowo (IMG:style_emoticons/default/smile.gif)

Treść postów jest w 100% poprawnie zczytywana, ale mam problem z HTML (opisałem go wcześniej ) bo po zmienieniu w meta kodowania na utf 8 "krzaczki" widzi moja przeglądarka w tytule strony. Na stronie Vikinga przeczytałem :

" Ustalanie kodowania poprzez tag meta:

<meta http-equiv="content-type" content="text/html; charset=utf-8" />

NIE MA NAJMNIEJSZEGO ZNACZENIA! Jest to potwornie ważna informacja, jeden z powodów tak wielu problemów z “krzakami” na stronie. <meta http-equiv="content-type" … sugeruje jedynie sposób konfiguracji serwera, ustalenie odpowiadających nagłówków. Żaden serwer nigdy tej funkcji nie zaimplementował. "


Czy więc mogę ustawić w seksji meta spokojnie poprzedni sposób kodowania bez obawy o jakieś błędy ? Czyli :

  1. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">


Ten post edytował blackstone 12.11.2015, 16:50:25
Go to the top of the page
+Quote Post
viking
post
Post #9





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Zależy jaką konfigurację domyślną ma serwer. Jeśli wyśle nagłówek to kod w meta zostanie totalnie zignorowany. Jesli w edytorze zapisałeś plik w UTF-8, a w meta ustawisz ISO - zobaczysz krzaki. Jeśli przeglądarka zaczyta meta ISO a z bazy pójdzie UTF-8 - zobaczysz krzaki w treści bazy.
Po prostu - zapisuj wszystko w UTF-8 i naprawę unikniesz całej masy problemów teraz i w przyszłości. Już nie pamiętam kiedy ostatni raz na ISO pracowałem.
Go to the top of the page
+Quote Post
blackstone
post
Post #10





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 19.03.2015

Ostrzeżenie: (0%)
-----


"Po prostu - zapisuj wszystko w UTF-8 i naprawę unikniesz całej masy problemów teraz i w przyszłości. Już nie pamiętam kiedy ostatni raz na ISO pracowałem."

Własnie tak teraz robię i mam problem z wszystkim co nie pochodzi z bazy sql. Owszem baza jest zczytywana jak trzeba, ale jeżeli coś z niej nie pochodzi to mam : np "G??wka" . Z czego to wynika? Co tu zrobić? To chyba nie jest problem PHP ale teraz cały projekt jest zatrzymany przez to (IMG:style_emoticons/default/smile.gif)

Ten post edytował blackstone 25.11.2015, 17:40:47
Go to the top of the page
+Quote Post
Fred1485
post
Post #11





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

Ostrzeżenie: (0%)
-----


No ale w bazie masz normalne znaki czy też pytajniki?
Go to the top of the page
+Quote Post
blackstone
post
Post #12





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 19.03.2015

Ostrzeżenie: (0%)
-----


W bazie mam mam normalne znaki, i wszystko z bazy jest wyświetlanie poprawnie tylko że problem jest związany z tym co z bazy nie pochodzi a jest zapisane w kodzie HTML
Go to the top of the page
+Quote Post
andrew654
post
Post #13





Grupa: Zarejestrowani
Postów: 35
Pomógł: 9
Dołączył: 16.11.2012

Ostrzeżenie: (0%)
-----


To musisz teraz ustawić kodowanie pliku, najlepiej utf8 bez BOM i oczywiście poprawić wszystkie krzaczki
Go to the top of the page
+Quote Post
blackstone
post
Post #14





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 19.03.2015

Ostrzeżenie: (0%)
-----


Właśnie UTF 8 mam ustawione, tylko nie wiem o co chodzi z tym BOM. Można jakiś przykład jak to wyłączyć (IMG:style_emoticons/default/questionmark.gif)
A z tymi kraczkami to chyba nie za bardzo rozumiem, bo one są chyba wynikem złego działania kodowania a nie tego że ja je wpisałem (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
rad11
post
Post #15





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Otworz plik w notatniku lub notepad++.

Notatnik:

wybierz pilk->zapisz jako->kodowanie->utf8

Notepad++:

format->koduj w UTF-8 bez BOM
Go to the top of the page
+Quote Post
andrew654
post
Post #16





Grupa: Zarejestrowani
Postów: 35
Pomógł: 9
Dołączył: 16.11.2012

Ostrzeżenie: (0%)
-----


https://pl.wikipedia.org/wiki/BOM_%28informatyka%29

To taki znacznik na początku pliku, który później może namieszać przy np. przekierowaniach lub tworzeniu sesji. Zawsze wysyła już coś do przeglądarki.
Z krzaczkami może się uda przez zmianę kodowania. Tylko jeśli plik był. np. w windows 1250 przy zmianie kodowania pliku na utf-8 polskie znaki się same nie przekonwertują
Go to the top of the page
+Quote Post
blackstone
post
Post #17





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 19.03.2015

Ostrzeżenie: (0%)
-----


Zrobiłem coś takiego: plik php w których wystąpił problem przeniosłem do osobnego folderu ( by go odseparować) i skopiowałem jego treść. Następnie otworzyłem nowy plik w notatniku > po czym wkleiłem tam tą treść > dałem "zapisz jako" następnie wybrałem typ zapisu dla wszystkich plików > wpisałem nazwę starego pliku z oczywiście rozszerzeniem " .php" > oraz ustawiłem kodowanie utf-8 > no i zapisałem (IMG:style_emoticons/default/smile.gif) . Po ponownym załadowaniu strony problem znikł. Czy o to chodziło (IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.gif)


* Zaczynam podejrzewać że problemem był tu mój edytor tekstu do tworzenia stron - Zajączek 4.1 . Przeglądając ten plik php, zauważyłem że jeden z krzaczków był w pliku... ( a dokładnie mówiąc po pierwszym odświeżeniu nowej strony zapisanej w notatniku jeden z krzaczków się zmienił w inny, więc wszedłem w kod źródłowy i go ręcznie ( w notatniku ) usunąłem ) . Możliwe ? Jeśli tak to może ktoś mi polecić jakiś inny darmowy edytor dla webmasterów ( chodzi mi jedynie o podkreślanie składni, jej przejrzystość ).

Ten post edytował blackstone 10.12.2015, 21:31:14
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 17.09.2025 - 19:40