PHP, setlocale(), strftime() a UTF-8
Tak tu řeším jeden problém s locale a češtinou v UTF-8
, a nemohu se
k tomu dopracovat.
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'> <html><body> <?php setlocale(LC_TIME,$_GET['a']); header('Content-Type: text/html; charset=utf-8'); echo "<h1>".strftime("%A, %d.%m.%y",time())."</h1>"; ?> </body></html>
Problém je v tom, že pokud zadám do setlocale
cokoliv jiného než czech
, je vše
anglicky. Toto všechno nefunguje:
Czech_Czech Republic.UTF8 Czech_Czech Republic.65001 Czech_Czech Republic.UTF-8 cs_CZ.utf8 czech.65001 Czech_Czech Republic.UTF
Předpokládám, že řešení bude naprosto triviální, ale teď je prostě nevidím.
Možnost je napsat iconv('iso8859-2','utf-8',strftime(..))
,
ale to není řešení koncepční.
Na Linuxu funguje cs_CZ.utf8, na Windows se mi nastavení najít nepodařilo.
[1] jenže mě
cs_CZ.utf8
nefunguje ani na Linuxu... (webhost)Presne stejny problem mam i ja, ale uz mi nervy nevydrzely a proste sem ten iconv nakonec pouzil. :-(
Na linuxu potvrzuji cs_CZ.utf8, tam ho pouzivam (nema-li ho webhoster, ozvi se mu, prida to...), na win sem taky nezjistil. Podle msdn jsem neco zkusil, treba se i povede nastavit, ale napr. dny v tydnu to vraci stejne v cp1250. IMO utf pro php neni idealni - potebujes si z data vytahnout tri pismenka - misto "stř" dostanes "st?", pac "ř" zabira 3. a 4. znak ...
[4]
cs_CZ.utf8
zjevně nemá povoleno xhost.cz, už jsem jim posílal email, potřebuji právě dny v týdnu (viz příklad nahoře).Ohledně funkce substr(), tu jsem si napsal znovu a lépe, aby počítala s UTF-8 ;)
jediná možnost je požádat je, ať vygenerujou locale pro UTF8.. což je otázka 5 minut... Musí na to být samozřejmě verze glibc (2.2.5 české UTF8 neumí, 2.3.2 už jo).