Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Brak polskich znaków na stronie
Forum PHP.pl > Forum > Przedszkole
papisp
Jestem pierwszy raz na tej stronie i po raz pierwszy mam do czynienia z PHP.
Osoba co robiła stronę wyjechała i nie ma z nią kontaktu.
Problem jest w tym, że strona była przenoszona też nie przeze mnie.
Na stronie tej brakuje polskich znaków. W HTML-u dałbym radę.
Co zrobić aby to naprawić.
Mam dostęp do strony i hasła. Bardzo proszę o pomoc poniżej link do strony.
http://stronyweb.com.pl/smp/news.php
hyhyhy
Newsy są wyciągane z bazy danych, prawda? Zakładam, że baza ma kodowanie UTF-8, a Ty masz

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


Zmień na utf-8, powinno pomóc.

//EDIT: teraz widzę, że nie tylko newsy wywalają polskie znaki, w każdym razie i tak sprawdź to kodowanie smile.gif
kudlatypawelek
Może należy ustawić SET NAMES na określone kodowanie przy połączeniu z bazą?
papisp
Jak napisałem pierwszy raz mam do czynienia z PHP wiem że trzeba zmienić kodowanie tylko jak?
Mam pliki ściągnięte na komputer, mam zainstalowany WEBSERV edytor KED ale nie mogę i tak strony uruchomić lokalnie, mam dostęp do plików przez FileZilla
Który plik mam edytować?
hyhyhy
Na początek otwórz sobie czymkolwiek index.php i zmień to co Ci napisałem w poście wyżej na zamiast "iso-8859-2" wpisz "utf-8". Jeżeli nie pomoże, to spróbuj tak jak kolega wyżej radzi SET NAMES w bazie danych... ew. może samo kodowanie pliku jest inne niż utf-8 - na razie spróbuj pierwszego sposobu, bo jest najprostszy, a nuż zadziała.
emajl22
Otwórz plik index.php i w edytorze KED naciśnij F4 i zmień tam kodowanie na UTF-8 BEZ BOM. Tylko przed ustawieniem skopiuj całą zawartość pliku, a po zmianie wklej ponownie i zapisz. Jak to nie pomoże to zaraz po połączeniu z bazą danych daj SET NAMES. Więcej na ten temat poszukaj w google. A i zmień kodowanie tak jak kolega wyżej napisał.
papisp
Cytat(emajl22 @ 22.07.2011, 13:52:22 ) *
Otwórz plik index.php i w edytorze KED naciśnij F4 i zmień tam kodowanie na UTF-8 BEZ BOM. Tylko przed ustawieniem skopiuj całą zawartość pliku, a po zmianie wklej ponownie i zapisz.


To zrobiłem
Cytat(emajl22 @ 22.07.2011, 13:52:22 ) *
Jak to nie pomoże to zaraz po połączeniu z bazą danych daj SET NAMES. Więcej na ten temat poszukaj w google. A i zmień kodowanie tak jak kolega wyżej napisał.

Tego nie rozumiem. W jaki sposób połączyć się z baza danych? wybaczcie laickie pytania:)
Polonistyk
Cytat(papisp @ 22.07.2011, 15:28:08 ) *
To zrobiłem

Tego nie rozumiem. W jaki sposób połączyć się z baza danych? wybaczcie laickie pytania:)


Znajdź plik który odpowiada się za połączenie z bazą danych, poźniej w tym pliku zaraz nad
  1. ?>
dodaj
  1. mysql_query('SET NAMES utf8');

papisp
Podpowiesz, który to będzie plik?
W głównym mam takie:
Kod
.ftpquota
.htaccess
articles.php
blank_config.php
config.php
contact.php
downloads.php
edit_profile.php
faq.php
footer.php
index.php
login.php
lostpassword.php
maincore.php
maintenance.php
members.php
messages.php
news.php
news_cats.php
photogallery.php
print.php
profile.php
readarticle.php
register.php
search.php
setuser.php
showphoto.php
side_left.php
side_right.php
subheader.php
submit.php
viewpage.php
weblinks.php
IceManSpy
Zacznij od index.php
Polonistyk
Plik może być w folderze, najlepiej daj kod pliku readarticle.php
papisp
readarticle.php

  1. <?php
  2. /*---------------------------------------------------+
  3. | PHP-Fusion 6 Content Management System
  4. +----------------------------------------------------+
  5. | Copyright Š 2002 - 2006 Nick Jones
  6. | <a href="http://www.php-fusion.co.uk/" target="_blank">http://www.php-fusion.co.uk/</a>
  7. +----------------------------------------------------+
  8. | Released under the terms & conditions of v2 of the
  9. | GNU General Public License. For details refer to
  10. | the included gpl.txt file or visit <a href="http://gnu.org" target="_blank">http://gnu.org</a>
  11. +----------------------------------------------------*/
  12. require_once "maincore.php";
  13. require_once "subheader.php";
  14. require_once "side_left.php";
  15. require_once INCLUDES."comments_include.php";
  16. require_once INCLUDES."ratings_include.php";
  17.  
  18. if (!isset($article_id) || !isNum($article_id)) fallback("index.php");
  19. if (!isset($rowstart) || !isNum($rowstart)) $rowstart = 0;
  20.  
  21. $result = dbquery(
  22. "SELECT ta.*,tac.*, tu.user_id,user_name FROM ".$db_prefix."articles ta
  23. INNER JOIN ".$db_prefix."article_cats tac ON ta.article_cat=tac.article_cat_id
  24. LEFT JOIN ".$db_prefix."users tu ON ta.article_name=tu.user_id
  25. WHERE article_id='$article_id'"
  26. );
  27. $res = 0;
  28. if (dbrows($result) != 0) {
  29. $data = dbarray($result);
  30. if (checkgroup($data['article_cat_access'])) {
  31. $res = 1;
  32. if ($rowstart == 0) $result = dbquery("UPDATE ".$db_prefix."articles SET article_reads=article_reads+1 WHERE article_id='$article_id'");
  33. $article = stripslashes($data['article_article']);
  34. $article = explode("<--PAGEBREAK-->", $article);
  35. $pagecount = count($article);
  36. $article_subject = stripslashes($data['article_subject']);
  37. $article_info = array(
  38. "article_id" => $data['article_id'],
  39. "user_id" => $data['user_id'],
  40. "user_name" => $data['user_name'],
  41. "article_date" => $data['article_datestamp'],
  42. "article_breaks" => $data['article_breaks'],
  43. "article_comments" => dbcount("(comment_id)", "comments", "comment_type='A' AND comment_item_id='".$data['article_id']."'"),
  44. "article_reads" => $data['article_reads'],
  45. "article_allow_comments" => $data['article_allow_comments']
  46. );
  47. render_article($article_subject, $article[$rowstart], $article_info);
  48. if (count($article) > 1) {
  49. $rows = $pagecount;
  50. echo "<div align='center' style='margin-top:5px;'>\n".makePageNav($rowstart,1,$rows,3,FUSION_SELF."?article_id=$article_id&amp;")."\n</div>\n";
  51. }
  52. if ($data['article_allow_comments']) showcomments("A","articles","article_id",$article_id,FUSION_SELF."?article_id=$article_id");
  53. if ($data['article_allow_ratings']) showratings("A",$article_id,FUSION_SELF."?article_id=$article_id");
  54. }
  55. }
  56. if ($res == 0) redirect("articles.php");
  57.  
  58. require_once "side_right.php";
  59. require_once "footer.php";
  60. ?>




Index.php

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. </head>
  7.  
  8. <body>
  9. <?php
  10. /*---------------------------------------------------+
  11. | PHP-Fusion 6 Content Management System
  12. +----------------------------------------------------+
  13. | Copyright ? 2002 - 2006 Nick Jones
  14. | <a href="http://www.php-fusion.co.uk/" target="_blank">http://www.php-fusion.co.uk/</a>
  15. +----------------------------------------------------+
  16. | Released under the terms & conditions of v2 of the
  17. | GNU General Public License. For details refer to
  18. | the included gpl.txt file or visit <a href="http://gnu.org" target="_blank">http://gnu.org</a>
  19. +----------------------------------------------------*/
  20. require_once "maincore.php";
  21.  
  22. redirect($settings['opening_page']);
  23. ?>
  24.  
  25. </body>
  26. </html>




Takie są foldery

administration
cgi-bin
forum
images
includes
infusions
locale
themes

Rid
Jako język strony ma Pan zadeklarowany angielski-to może być przyczyną:
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">
proszę zmienić na:
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="pl">
I sprawdzić także kodowanie pliku-czy ma kodowanie UTF-8 bez Bom

A tak poza tym wydaje mi się,że tą stronę w ogóle u Pana nikt jej nie robił-próbuje Pan przerobić stronę gdzieś zaciągniętą z internetu na polskojęzyczną i do tego celu chce się Pan posłużyć Forumowiczami-wątpię ,aby Pana informatykowi chciało się wpisywać komentarze licencji w języku angielskim i dodatkowo wszystkie zmienne jak i deklaracje i nagłówki strony są pięknie po Angielsku napisane.

Życzę powodzenia w dalszym przerabianiu skryptu rolleyes.gif
papisp
Cytat(Rid @ 23.07.2011, 13:02:01 ) *
A tak poza tym wydaje mi się,że tą stronę w ogóle u Pana nikt jej nie robił-próbuje Pan przerobić stronę gdzieś zaciągniętą z internetu na polskojęzyczną i do tego celu chce się Pan posłużyć Forumowiczami-wątpię ,aby Pana informatykowi chciało się wpisywać komentarze licencji w języku angielskim i dodatkowo wszystkie zmienne jak i deklaracje i nagłówki strony są pięknie po Angielsku napisane.

Życzę powodzenia w dalszym przerabianiu skryptu rolleyes.gif

Być może tak jest ja chcę tylko to naprawić a w php mam zero doświadczenia HTML-a troszkę lizałem.

Zmieniłem kodowanie pliku index.php na kodowanie utf-8 poprawiłem tak jak Pan sugerował i efektu nie ma.
Zastanawia mnie jedno dlaczego w źródle strony pomimo zmian i edycji jest nadal
  1. <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-2'>
Polonistyk
No więc tak, prawdopodobnie w pliku maincore.php jest połączenie z bazą, tam powinieneś dodać
  1. mysql_query('SET NAMES utf8');

Nad
  1. ?>

Najlepiej jakbyś wrzucił ten plik (maincore.php), ale pamiętaj, może on zawierać hasła do bazy danych także dobrze sprawdź zanim go tutaj umieścisz smile.gif
potreb
Panowie to nie jest zgadul zgadula. System phpfusion jest tak obryty i prosty że nie ma co tu myśleć, najpierw sprawdzić kodowanie bazy, tabel, czy treść jest tam poprawnie zakodowana. Po tym należy sprawdzić kodowanie plików, meta i połączenie z bazą. Myślę, że przy użyciu wyszukiwarki na php.pl kolega znajdzie odpowiedź.
papisp
Cytat(Polonistyk @ 23.07.2011, 13:35:11 ) *
No więc tak, prawdopodobnie w pliku maincore.php jest połączenie z bazą, tam powinieneś dodać
  1. mysql_query('SET NAMES utf8');

Nad
  1. ?>

Najlepiej jakbyś wrzucił ten plik (maincore.php), ale pamiętaj, może on zawierać hasła do bazy danych także dobrze sprawdź zanim go tutaj umieścisz smile.gif

Tak zrobiłem i krzaki były większe

Dnia 17 grudnia b.r odbyło się zebranie stowarzyszenia, które było podsumowaniem roku, a jednocześnie wstępnym planowaniem działań

Przywróciłem z powrotem poprzedni stan.

Polonistyk jak dam Ci dostęp na pw to dasz radę naprawić?
Damonsson
1. Przeczytałeś podwieszony temat i sprawdziłeś wszystkie możliwości?
Odpowiem za Ciebie, Nie. Bo gdybyś to zrobił problem zostałby rozwiązany.

2. Zamiast bezsensownie szukać po wszystkich plikach, sprawdź sobie gdzie PHP-Fusion 6 łączy się z bazą danych i tam zmień kodowanie, jeśli nie znajdziesz, to masz pewnie nazwę i hasło do bazy danych wpisz któreś w nich w wyszukiwarkę np. Total Commandera i znajdzie Ci, w jakim pliku jest to słowo...w tym pliku łączysz się z bazą danych i tam stosujesz się do zaleceń z podpiętego tematu odnośnie polskich znaków.
Polonistyk
Poradzisz sobie...
Krzaczki większe, hmm... zmień kodowanie w bazie danych na utf8
http://forum.php.pl/lofiversion/index.php/t66292.html
Prawdopodobnie będziesz musiał poprawić wszystkie literki, bo w bazie danych będą zapisane jako ? To na pewno pomoże, ale może to być czasochłonne.

Tutaj porada, którą wygooglowałem.
W pliku łączenia z bazą dodaj:
  1. mysql_query('SET character_set_connection=utf8');
  2. mysql_query('SET character_set_client=utf8');
  3. mysql_query('SET character_set_results=utf8');

Możesz spróbować
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.