ugrás a tartalomhoz

setlocale beállítás után ékezetek helyett idézőjelek jelennek meg

hanso · 2009. Már. 16. (H), 19.29
Próbálkozom a setlocale() függvénnyel, de egy furcsa hiba jött elő. A hétfő helyett ez jelenik meg: he'tfo"

Nézegget a fórumon és a Google-ban is, de nem találtam rá megoldást.

setlocale(LC_ALL, "hu_HU.ISO88592");
echo strftime("%Y.%m.%d - %A");
ISO-8859-2 karakterkódolást kell használnom.

Tudna valaki segíteni? Köszi.
 
1

Locale

alex_w · 2009. Már. 19. (Cs), 13.56
Ellenőrizd a setlocale() visszatérési értékét, de gyanítom hogy helyesen a második paraméter hu_HU.ISO-8859-2 lenne.

<?php
if (!setlocale(LC_ALL, "hu_HU.ISO-8859-2")){
  print("Lokalizáció beállítása nem sikerült");
}
else{
  print(strftime("%Y.%m.%d - %A"));
}
2

Sajnos nem. A php.net

hanso · 2009. Már. 22. (V), 16.49
Sajnos nem.

A php.net setlocale() leírásában az első hozzászólás pont erről szól:
http://hu.php.net/manual/en/function.setlocale.php
A karakterkódolást elválasztó jelek nélkül kell írni.

Azért kipróbáltam a te elágazásodat is, és ott is hibásan jelenik meg.
3

Van olyan locale?

Török Gábor · 2009. Már. 22. (V), 21.54
A célkörnyezetben biztos van olyan locale, amit be szeretnél állítani (locale -a)?
4

Igen. Ezért is jelenik meg

hanso · 2009. Már. 22. (V), 22.35
Igen. Ezért is jelenik meg valami, egyébként az angol jelenne meg.

$ locale -a
C POSIX hu_HU.iso88592 hungarian
5

hu_HU.iso88592 hogyan?

hector · 2009. Szep. 11. (P), 13.05
Segítsetek, meg vagyok lőve!

A minap újratelepítettem egy szervert (Debian Lenny), és a hu_HU.iso88592 locale sehogyan sem akar menni PHP alatt (en_US megy helyette). A telepített lokalizációk:

kovi@gserver:~$ locale -a
C
en_US.utf8
hu_HU
hu_HU.iso88592
hu_HU.utf8
hungarian
POSIX
A hu_HU.utf8 szépen működik, csak a latin2-es nem akarja az igazat. Próbáltam simán hu_HU és hu_HU.iso88592-ként is megadni a setlocale()-nek, de semmi. Apache természetesen újraindítva.

Ötlet?

Végső soron megoldom utf8-cal és iconvval (csak a dátum kiírása miatt kellene), de jó lenne nem taknyolni.
6

date_default_timezone_set()

nemalevi · 2009. Szep. 11. (P), 19.15
A setlocal() helyett szerintem inkább ezt a függvényt érdemes használni.
date_default_timezone_set('Europe/Budapest');
7

CLI-ben oké

hector · 2009. Szep. 14. (H), 10.53
Ez a dolog kezd egyre rejtélyesebb lenni. Kiderült, hogy CLI-ben simán megy a hu_HU.iso88592, ugyanazt a szkriptet Apache-ból futtatva viszont nem; a setlocale() false-t ad vissza. A php.ini fájlokhoz még hozzá sem nyúltam, az van fent, amit a rendszer feltelepített. E?
8

Megoldva

hector · 2009. Szep. 14. (H), 12.53
Na, sikerült megoldani. Le kellett állítani az Apache-ot a "/etc/init.d/apache2 stop"-pal majd újraindítani a starttal. Úgy látszik az "apache2ctl restart", amit előtte használtam, nem volt neki elég.