PHP, setlocale(), strftime() a UTF-8

MyEgo.cz

home foto blogy mywindows.cz kontakt

PHP, setlocale(), strftime() a UTF-8

PHP 16.08.04

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


Komentáře

  1. 1 paja 16.08.04, 02:08:02
    FB

    Na Linuxu funguje cs_CZ.utf8, na Windows se mi nastavení najít nepodařilo.

  2. 2 Radek Hulán 16.08.04, 02:08:14
    FB

    [1] jenže mě cs_CZ.utf8 nefunguje ani na Linuxu... (webhost)

  3. 3 Petr 16.08.04, 03:08:24
    FB

    Presne stejny problem mam i ja, ale uz mi nervy nevydrzely a proste sem ten iconv nakonec pouzil. :-(

  4. 4 JohnyB 16.08.04, 09:08:54
    FB

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

  5. 5 Radek Hulán 16.08.04, 09:08:59
    FB

    [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 ;)

  6. 6 majkls 16.08.04, 10:08:45
    FB

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