Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]wyswietlanie listy plikow - polskie znaki - nowy szczegol
Forum PHP.pl > Forum > Przedszkole
phoenix84
sprawa wyglada tak...

kiedy wczytuje zawartosc katalogu x, gdzie sa pliki, ktorych nazwa zawiera polskie znaki... dostaje na ekran '?' zamiast polskiego znaku...

plik 'Pl-ąęśćńźłżó.ogg' wyświetlany jest jako: 'Pl-questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif?.ogg'

strona kodowana w utf-8... zabawa w iconv nie pomaga, bo niestety nie wiem co to jest za kodowanie... czy ktos mial podobny problem? (nie znalazlem nic satysfakcjonujacego na googlach, ani tutaj w wyszukiwarce...)

co moze byc przyczyna?

pozdrawiam

Phoenix
Shili
Jaki system?
Ogólna zasada jest taka, że w nazwach plików nie używa się polskich znaków diakrytycznych, a skoro zczytujesz pliki, to pewnie z serwera. Ważny jest system, choćby dlatego, że bez tej wiedzy trudno będzie ustalić jakiego kodowania używa.
phoenix84
pliki pochodza oryginalnie z wikislownika, ale kiedy program wykryje, ze plik zostaly zaktualizowany, to sa automatcznie sciagane na moj dysk twardy i z niego odtwarzane, by bylo szybciej... odczyt odbywa sie zazwyczaj na winxp lub vista, ale wiki skad tez czasem czytam nie wiem na czym stoi smile.gif

do tego tam nie ma tylko polskich znakow, a inne jak chinskie czy arabskie tez... smile.gif

im wiecej znasz, tym wiecej podaj, bedzie dla tych co beda mieli problem w przyszlosci, a beda szukac...

pozdro

Phoenix
Shili
Xp i Vista to kodowania windows-1250 (cp-1250) i latin2 (iso-8859-2) pod warunkiem oczywiście, że jest to system polski (lub języków pokrewnych).

Prawdopodobnie wszystko się rozchodzi przez to cp-1250.
ayeo
Popraw tytuł tematu na zgodny z zasadami działu Przedszkole!

http://automaciej.jogger.pl/2008/03/08/jak...olskich-znakow/

Pozdrawiam!
phoenix84
1. system jest angielski, nie polski
2. wpisanie cp-1250 w iconv tez nie pomoglo... (tekst w ogole zniknal, jakby iconv nie rozpoznal w ogole takiego typu kodowania)
3. ten link co mi podal ayeo nie zawiera mojego problemu, poniewaz mi zamiast kazdego polskiego znaku wywala pytajnik, a nie krzak... czyli jakby juz cos z dysku zle zczytywal...
4. a jaki tytul posta jest zgodny z zasadami przedszkola... nie chce lamac regul... ale o tej nic nie wiem smile.gif
Shili
A masz na tym systemie zainstalowane polskie czcionki i polskie kodowanie?

Twój system nie rozpoznaje kodowania, bo go zwyczajnie nie zna. Dlatego wszystko zastępuje znakami zapytania i jeśli mam rację, to nic na to nie poradzisz.
Przy ściąganiu konwertuj pliki to nazw bez ogonków - dość prosta operacja i nie będziesz mieć problemu.
phoenix84
hmmm

w systemie pisze normalnie... zeby wstawic ogonek, to wciskam ALT smile.gif wiec chyba wszystko jest w porzadku... problem pojawia sie wtedy, kiedy chce sprawdzic czy mam juz taki plik na dysku... czyli musze sprawdzic poprawnosc nazwy... a skrypt mi mowi, ze pliku nie ma... a jest... smile.gif kasowanie ogonkow tez nic nie da... no bo jak mam skasowac ogonek w chinskich znakach?questionmark.gif smile.gif no bo na co mi wymowa polskich slow smile.gif... problem jest w innych jezykach... kasowanie ogonkow nawet w europejskich jezykach nie ma sensu... bo jak odroznisz slowa kat i kąt... smile.gif

jak moge w takim razie powiedziec skryptowi, jakie o jest kodowanie...? bo na pewno jest na to jakis sposob... nie wierze, ze na calym swiecie skrypty sa w stanie odczytywac nazwy plikow zapisane tylko lacinskimi znakami bez diakrytow...

pozdrawiam

Phoenix

dodatkowy fakt...

kiedy robie link do tych plikow, to wszystko dziala... czyli wynika z tego, ze cos z funkcja wczytywania katalogu jest nie tak...

ten testowy kawalek kodu wyglada tak:

  1. <?php
  2. $folder = dir("$sciezka_wymowa");
  3.  
  4. echo '<ul>';
  5. while($plik = $folder->read())
  6.  {
  7.  echo '<li><a href="' .$plik. '">' .$plik. '</a></li>';
  8.  }
  9. echo '</ul>';
  10. ?>


a efekt jest taki:

.
..
De-at-gut.ogg
En-us-good.ogg
Fr-bon.ogg
Fr-mauvais.ogg
Pl-dobry.ogg
pl-z?y.ogg
Ru-questionmark.gifquestionmark.gifquestionmark.gif?.ogg

z tym, ze z wypunktowaniem... smile.gif

jak sie komus chce to moze go przetestowac... smile.gif

pozdro

Phoenix

to moze inaczej...

pytanie brzmi:
za pomoca jakiej funkcji moge sprawdzic czy istnieje plik zawierajacy nielacinski znak w nazwie... bo file_exists juz go nie widzi...

xXx
Pilsener
Uzyj funkcji w stylu: http://pl2.php.net/manual/pl/function.mb-detect-encoding.php (pewnie iconv też ma taką funkcję, która powinna rozpoznać kodowanie znaków w stringu). Znając kodowanie możesz je zmienić na inne (choćby iconv).
phoenix84
Dzieki za te funkcje... ale nie pomoglo...

wskazala, ze jest to kodowanie: 'ascii'... niestety iconv tez nic z tym nie moze zrobic... bo juz funkcja readdir zwraca ord=63 czyli pytajnik dla kazdego nielacinskiego znaku... jednym slowem klapa... smile.gif nigdy by mi nie przyszlo do glowy, ze php jest tak ograniczone... smile.gif

ciekawe jak chlopaki z wiki to obeszli... smile.gif

pozdro i dzieki

Phoenix
Kicok
iconv" title="Zobacz w manualu PHP" target="_manual miało prawo nie rozpoznać kodowania CP-1250, spróbuj:
  1. <?php
  2.  
  3. $res = iconv( 'CP1250', 'UTF-8', $text );
  4.  
  5. ?>



Jeśli znowu będzie pusta strona, to włącz sobie wyświetlanie błędów.
Ewentualnie możesz jeszcze sprawdzić CP1252 jeśli to angielski system - chociaż nawet nie wiem czy w tym zestawie są polskie znaki ;]
phoenix84
zadne z rozwiazan nie pomoglo... bledy mialem ustawione na wyswietlanie... notice'y wlaczylem i dalej cisza...

btw... nie chce by to zabrzmialo nie milo... ale czy jest tu ktos, komu php odczytuje pliki z polskimi znakami w nazwie? bo sie zaczalem obawiac, ze moze nikomu... a wszyscy chca pomoc smile.gif

chyba jedynym rozwiazaniem zostanie umieszczenie tych plikow w bazie danych... choc jak sobie wyobraze, ze trzeba to zrobic recznie, bo skryt ich nie zobaczy, to rece opadaja...

pozdro

Phoenix
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.