Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]prosty Shoutbox - kodowanie
Forum PHP.pl > Forum > Przedszkole
sciss
Witam!
Tworzę prostą stronę na własny użytek (pierwszy raz od 10 lat i tym razem nie we FrontPage Express smile.gif ) i postanowiłem dodać jakiegoś shoutboxa. Znalazłem całkiem fajnego na stronie:
http://www.htmlandphp.com/scripts/simple-p...e-shoutbox.html
Jego zaletą jest prostota oraz brak Mysql - korzysta ze zwykłego pliku tekstowego. Nie obsługiwał nowych linijek i miał buga w wyświetlaniu daty, ale można to łatwo naprawić - jest w komentarzach na w/w stronie.
Jednak nie mogę sobie poradzić z obsługą kodowania polskich znaków. W sensie, żeby poprawnie zapisywal i odczytywał polskie znaki z tego tekstowego pliku. Próbowałem różnych porad, przekopywałem googla i nic. Jednakże moja wiedza nt. php jest znikoma, więc może to coś prostego?

Tutaj można zobaczyć go w akcji:
http://diablo.ict.pwr.wroc.pl/~bmajda/shoutbox/index.php
Tutaj plik tekstowy, w którym zapisują się wiadomości:
http://diablo.ict.pwr.wroc.pl/~bmajda/shoutbox/data/data.csv

Czy wiecie jak zmusić go do wyświetlania polskich znaków?

EDIT: ups coś uczelniany serwer się przyciął i na razie nie odpalają te strony z przykładami shoutboxa facepalmxd.gif

EDIT2: Serwer ruszył jakby ktoś miał chęć zajrzeć...
lobopol
jakie kodowanie mają pliki? Zmień na utf-8 bez bom
sciss
Mam linuksa i w nim chyba standardowo jest utf-8. Dla pewności jeszcze raz przez shella pootwierałem emacsem wszystkie pliki i pozapisywałem z ustawionym kodowaniem utf-8. Nadal kicha. Plik z danymi otwarty hexedytorem wygląda tak:
Kod
0000000: 3c61 2068 7265 663d 2268 7474 703a 2f2f  <a href="http://
0000010: 6f6e 6574 2e70 6c22 2074 6172 6765 743d  onet.pl" target=
0000020: 225f 626c 616e 6b22 3e74 6573 743c 2f61  "_blank">test</a
0000030: 3e2c 3133 3730 3238 3539 3838 2c65 2026  >,1370285988,e &
0000040: 4175 6d6c 3b99 206f 2026 4174 696c 6465  Auml;. o &Atilde
0000050: 3b26 7375 7033 3b20 6120 2641 756d 6c3b;? a Ä
0000060: 8520 7320 2641 7269 6e67 3b9b 207a 2026  . s ?. z &
0000070: 4172 696e 673b 2666 7261 6331 343b 2078  Aring;? x
0000080: 2026 4172 696e 673b 266f 7264 6d3b 2063   questionmark.gif c
0000090: 2026 4175 6d6c 3b87 206e 2026 4172 696e   Ä. n &Arin
00000a0: 673b 840a 7465 7374 2c31 3337 3032 3836  g;..test,1370286
00000b0: 3131 342c 4520 2641 756d 6c3b 9820 4f20  114,E Ä. O
00000c0: 2641 7469 6c64 653b 9320 4120 2641 756d  ?. A &Aum
00000d0: 6c3b 8420 5320 2641 7269 6e67 3b9a 204c  l;. S ?. L
00000e0: 2026 4172 696e 673b 8120 5a20 2641 7269   ?. Z &Ari
00000f0: 6e67 3b26 7261 7175 6f3b 2058 2026 4172  ng;? X &Ar
0000100: 696e 673b 2673 7570 313b 2043 2026 4175  ing;? C &Au
0000110: 6d6c 3b86 204e 2026 4172 696e 673b 830a  ml;. N ?..

Więc nie ma tego BOOMa. Inne pliki (index.php itd.) też go nie mają.
Powpisywałem teraz w shoutboxa coś takiego: a ą e ę o ó itp. A zamiast ą i ę wychodzą jakieś &Auml i &Aring.
lobopol
Odpaliłem ten skrypt u siebie lokalnie. Działa co zmieniałeś?
sciss
Praktycznie nic. Dodałem tylko kropkę przed slashem w index.php, bo się arkusz css nie chciał załadować:
Kod
<link rel="stylesheet" type="text/css" href="./styles/styles.css">
lobopol
Czyli wychodziłoby, że coś z kodowaniem spsułeś upewnij się, że jest utf8 bez bom
sciss
Wg http://stackoverflow.com/a/3380089 BOOM charakteryzuje się tym, że ma na początku pliku bajty EF BB BF. Sprawdziłem wszystkie pliki hexedytorem i żaden nie miał takich bajtów na początku.
Dodam też tak z zupełnie innej strony, że ten plik data.csv musiałem sam stworzyć i nadać mu prawa 777, bo skrypt sam strzelał errorami, gdy pliku nie było na początku.
lobopol
Ale plik może być np. ansii bądź innym kodowaniu po prostu się upewnij.
sciss
Wg http://stackoverflow.com/a/700221 w pliku kodowanym utf-8 - jeśli nie ma znaków specjalnych, kodowanych (takich jak np polskie znaki), to znaki koduje jako ascii. W tych plikach php nie ma żadnych ogonków, wszystko pisane jest po angielsku, więc de facto pliki są zakodowane w ascii.
lobopol
Posłuchaj, ściągnąłem ten kod wypakowałem i zmieniłem ścieżkę dla css. Wszystko działa. Więc:
a) zwaliłeś w jakiś sposób kodowanie (obstawiam, że w pliku cvs lub index.php)
cool.gif masz coś źle ustawione w konfiguracji apache
c) masz coś źle ustawione kodowanie znaków w przeglądarce

innej opcji nie ma
sciss
Skasowałem wszystkie pliki i wgrałem od nowa tym razem wklejając do edytora, poprawiłem literówkę z kropką w index.php, usunąłem data.csv, dałem chmod 777 data/ dzięki czemu plik data.csv zaczął się sam tworzyć bez problemu, ale to nic nie dało jeśli chodzi o kodowanie :/
Jeśli chodzi o
a)nie mam pojęcia jak mógłbym zwalić kodowanie wklejając zawartość w linuksowy edytor, który domyślnie zapisuje jako utf8
b)apache - nie wiem, raczej nie mam dostępu do konfiguracji. Co prawda próbowałem na dwóch serwerach i wciąż te same kwiatki zamiast ogonków wyskakują
c)chrome wykrywa mi stronę jako utf8
...
Mimo wszystko dzięki lobopol za próbę pomocy.
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.