Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]funkcja date() a polskie znaki?
Forum PHP.pl > Forum > Przedszkole
xajart
Witam, kiedyś o tym czytałem a teraz nie mogę tego znaleźć.
A mianowicie mam skrypt kodowany w UTF8 bez BOM, kodowanie ustawione na utf8, a kiedy wywołuj funkcję:

Kod
$i=12;
echo strftime('%B', mktime(0, 0, 0, $i, 1));



Nie wyświetla mi polskich znaków przy nazwach miesięcy.

setlocale mam ustawiony:
Kod
$arrLocales = array('pl_PL.UTF-8','pl_PL','polish');
setlocale(LC_ALL, $arrLocales );


Jednak nie wiem czy jest on poprawnie zadeklarowany.
Pilsener
Hmmm, a w phpinfo() nie wyświetli, jakie kodowanie zostało wybrane, strefa czasowa etc? Użyj funkcji typu mb_detect_encoding by określić, w jakim kodowaniu zwracana jest data a następnie np. iconv by zmienić kodowanie na takie, jakie chcesz.

Edit: (uzupełniam)

1.
Cytat
powinno się używać funkcji strftime()
- potwierdzam
2.
Cytat
pod Windows dochodzi do różnych dziwnych rzeczy
- również potwierdzam, strftime działa pod linuchem bez zarzutu, pod windowsem można robić protezy w stylu:

  1. $data = strtr($data, 'ĄŚŹąśź', 'ˇ¦¬±¶Ľ');


Sztuczka z rozpoznaniem kodowania a następnie wstawienia go jako źródłowego w iconv także pod windowsem może sprawić problemy gdyż ogólnie znaną prawdą jest, że wszelkie funkcje typu kodowanie znaków źle sobie radzą z windowsem smile.gif
Zyx
Do formatowania dat w językach innych niż angielski powinno się używać funkcji strftime(), gdyż date() niezbyt się przejmuje ustawieniami locale.
erix
Cytat
Nie wyświetla mi polskich znaków przy nazwach miesięcy.

To zależy od platformy. Najlepiej sytuacja ma się pod Uniksem; pod Windows dochodzi do różnych dziwnych rzeczy z diakrytykami.

Jeśli zależy Ci na międzyplatformowości, utwórz tablice z nazwami dni/miesięcy.
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.