Forum FAQForum FAQSearchSearch MemberlistMemberlist Forum ignore listForum ignore list RegisterRegister ProfileProfile Log in to check your private messagesLog in to check your private messages Log inLog in
PHP - strftime problem na Windowsima

 
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    mi3dot.org Forum Index -> Server-side
View previous topic :: View next topic  
Author Message
gordan



Joined: 24 Feb 2007
Posts: 17

PostPosted: 26.02.2007 13:18    Post subject: PHP - strftime problem na Windowsima Add user to your forum ignore list Reply with quote

Windows XP-SP2 ("naša" slova svugdje uredno rade i svuda di se može je stavljeno Croatia)
Apache 1.3
PHP 5.2 (ponovo, "naša" slova svugdje funkcioniraju besprijekorno (gettext, generiranje PDFova, MySQL ... dakle sve bez ikakvih problema)
ali evo problema:

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head><body>
<?php
 setlocale(LC_ALL, 'hrv_HRV');
 echo strftime("%B") . '<br />';
 echo utf8_encode(strftime("%B"));
>
</body></html>


daje output:
velja?a (upitnik umjesto č)
veljaea (e sa umlautom umjesto č)

Naravno, na Unixima stvar radi besprijekorno. Pretražio sam Net uzduž i poprijeko ali nisam uspio nać rješenje koje bi podesilo environment (bilo sam PHP bilo Windowse) da strftime izbaci string kodiran u UTF8. Pronašao sam nekoliko registriranih bugova koji potvrđuju da strftime ne daje UTF8.
Na stranu što bi ja htio znat kako ovo elegantno riješit imam komad softvera sa beskonačno mnogo strftimeova() i ne bi baš volio radit sear-replace-all s nekom drugom funckijom koja bi radila nekakav strreplace ili nešto u tom stilu.
Promjena charseta je također gotovo pa nemoguća misija jer je sve na UTF8 pa .....

Ako netko ima neke ideje/prijedloge unaprijed zahvaljujem
Back to top
View user's profile Send private message
matun



Joined: 19 Feb 2007
Posts: 23

PostPosted: 26.02.2007 17:41    Post subject: Add user to your forum ignore list Reply with quote

Da li možda imaš problema s BOM-sigom radi UTF-a? Naime, UTF ima ružnu naviku stavljati gluposti na početke svakog fajla koji je UTF-encoded pa to zna raditi probleme s encodingom poslije.

Najjednostavnije ti je provjeriti da li je to tako što jednostvno edit.com-om otvoriš fajl na koji sumnjaš i potražiš hijeroglife na _samom početku_ koda. Ako postoje, BOM radi frku.

Ako je to, probaj stvar riješiti BOM-removerom...

P.S. U "obicnim" editorima ti se hijeroglifi znaju ne prikazivati, pa zato potreba za provjerom u edit.com-u
Back to top
View user's profile Send private message
gordan



Joined: 24 Feb 2007
Posts: 17

PostPosted: 26.02.2007 18:00    Post subject: Add user to your forum ignore list Reply with quote

"strftime.php - nema bom" thanks na ideji al nije pomoglo ;-(
koristim Zend Studio pa se nadam da ipak prikazuje takve stvari
Back to top
View user's profile Send private message
gog



Joined: 18 Jun 2004
Posts: 679
Location: zagreb

PostPosted: 27.02.2007 13:33    Post subject: Add user to your forum ignore list Reply with quote

Je si li poslao utf-8 header?

Ubaci

Code:
header("Content-type: text/html; charset=UTF-8"); 


na početku skripte
Back to top
View user's profile Send private message Visit poster's website
gordan



Joined: 24 Feb 2007
Posts: 17

PostPosted: 27.02.2007 15:36    Post subject: Add user to your forum ignore list Reply with quote

gog wrote:
Je si li poslao utf-8 header?


probao sam i to, ništa Crying or Very sad
Firefox uredno kaže da je encoding UTF-8 i header je 100% poslan

echo "šđčćž"; uredno daje naša slova, a i ako napišem u samom dokumentu naša slova sve se uredno vidi. samo taj strftime zajebava

PS
poprilično sam uvjeren da se to ne može jer ne vidim takvu funkciju u manualu, al ... jel bi mogo ubit originalni strftime i overrideat ga svojom funkcijom?
Back to top
View user's profile Send private message
zytzagoo
mi3.crew


Joined: 25 Aug 2003
Posts: 1842
Location: Zagreb, Hrvatska

PostPosted: 27.02.2007 20:13    Post subject: Re: PHP - strftime problem na Windowsima Add user to your forum ignore list Reply with quote

Code:
<?php
echo iconv('iso-8859-2', 'UTF-8', strftime("%B"));
?>


S tim da to nije riješenje... nego dosta zajebani workaround, budući da moraš tražiti sve occurence strftime()-a, a ne možeš ga re-definirati jednostavno...

Prvenstveno mi se čini da je problem u tome što setlocale() postavlja interno enkoding na iso-8859-2 izgleda, umjesto na utf-8, ali to je i za očekivati, budući da će kompletna native utf podrska doci tek valjda u PHPu 6...

Na *nixu bi mozda moglo proci nesto tipa:
Code:

<?php
setlocale(LC_ALL, 'hr_HR.UTF-8');
?>

Ovisno o tome da li postoji taj locale.... ali na Windowsima... no klu za sad... probam google-at malo pa javim ako nadjem stogod...

_________________
[+]I[+]am[+]my[+]own[+]religion[+]
Back to top
View user's profile Send private message Visit poster's website Twitter profile
zytzagoo
mi3.crew


Joined: 25 Aug 2003
Posts: 1842
Location: Zagreb, Hrvatska

PostPosted: 27.02.2007 20:21    Post subject: Add user to your forum ignore list Reply with quote

Wierd shit... ako se napravi samo:
Code:
setlocale(LC_TIME, 'hrv_HRV');

na windowsima... Onda
Code:
echo strftime("%B");

vraca "veljaca"...

_________________
[+]I[+]am[+]my[+]own[+]religion[+]
Back to top
View user's profile Send private message Visit poster's website Twitter profile
zytzagoo
mi3.crew


Joined: 25 Aug 2003
Posts: 1842
Location: Zagreb, Hrvatska

PostPosted: 27.02.2007 20:30    Post subject: Add user to your forum ignore list Reply with quote

Ne znam koliko je staro ovo na msdn-u, ali tamo nema ni spomena hrvatskom/oj:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_language_strings.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_country_strings.asp

I izgleda da nema na Windowsima UTF-8 varijante hr_HR (bar ne za sada):
http://docs.moodle.org/en/Table_of_locales#Table

_________________
[+]I[+]am[+]my[+]own[+]religion[+]
Back to top
View user's profile Send private message Visit poster's website Twitter profile
gordan



Joined: 24 Feb 2007
Posts: 17

PostPosted: 27.02.2007 21:58    Post subject: Add user to your forum ignore list Reply with quote

Apsolutno jedini locale string koji radi na Windowsima je "hrv_HRV", probao sam ih valjda 100.

O internom hendlanju sam dosta čitao na PHP bug listama i ovisno o localeu događa se svašta.

Mislim da mi neće preostat ništa drugo nego zamjenit sve strftime sa strftime2 i onda to nekako sredit, al čisto me strah toga jer aplikacije je ogromna i takav brutalni search&replace je zbilja ružno rješenje.

@zytzagoo hvala na trudu!
Back to top
View user's profile Send private message
zytzagoo
mi3.crew


Joined: 25 Aug 2003
Posts: 1842
Location: Zagreb, Hrvatska

PostPosted: 28.02.2007 10:47    Post subject: Add user to your forum ignore list Reply with quote

gordan wrote:
Mislim da mi neće preostat ništa drugo nego zamjenit sve strftime sa strftime2 i onda to nekako sredit, al čisto me strah toga jer aplikacije je ogromna i takav brutalni search&replace je zbilja ružno rješenje.

Nema druge izgleda, ako se mora vrtiti na windowsima...
I nemoj sa strftime2, jer ce ti kasnije biti teze jos... zamijeni sa hrv_strftime() ili sl Smile

S nekim pristojnim text editorom to ti je ravno 5min posla Smile

_________________
[+]I[+]am[+]my[+]own[+]religion[+]
Back to top
View user's profile Send private message Visit poster's website Twitter profile
gordan



Joined: 24 Feb 2007
Posts: 17

PostPosted: 01.03.2007 17:43    Post subject: Add user to your forum ignore list Reply with quote

2 min posla da se izvrti 429 fileova Smile
dakle sada imam naša slova i skinuo sam si konačno ženske iz računovodstva sa grbače koje nisu htjele koristit novu aplikaciju samo zbog toga (ne ne šalim se! i kladim se da će uskoro nać neko drugo opravdanje da me gnjave)

nadam se da će problem biti rješen kako spada u PHP6
@zytzagoo thanks još jednom
Back to top
View user's profile Send private message
Display posts from previous:   
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    mi3dot.org Forum Index -> Server-side All times are GMT + 1 Hour
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group