![]() |
![]() ![]() |
![]() |
![]()
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
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:
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) |
|
|
![]()
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'); |
|
|
![]()
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 ? |
|
|
![]()
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 |
|
|
![]()
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.
|
|
|
![]()
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 :
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. |
|
|
![]()
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.
|
|
|
![]()
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 :
Ten post edytował blackstone 12.11.2015, 16:50:25 |
|
|
![]()
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. |
|
|
![]()
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 |
|
|
![]()
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?
|
|
|
![]()
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
|
|
|
![]()
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
|
|
|
![]()
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) |
|
|
![]()
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 |
|
|
![]()
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ą |
|
|
![]()
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 17.09.2025 - 19:40 |