Autor | Zpráva | ||
---|---|---|---|
david78 Profil |
#1 · Zasláno: 31. 3. 2013, 19:16:21
Dobrý deň
mám takú otázku: Keď píšem nejaký text obsahu v index.php, na webe sa znaky s diakritikou nezobrazia správne, ale je tam taký kosoštvorec s otáznikom. Nerozumiem tomu, pretože v head tagu je predsa meta značka, ktorá charset definuje (utf-8) Záleží na tom ako sa ten index.php uloží po editnutí? (PsPad) (postup je takýto: vo filezilla otvorím priečinok, index.php >> upraviť, otvorí sa defaultný editor-pspad, niečo napíšem, uložím, zmena sa nahrá na server) Zatiaľ to riešim html entitami, ale to mi nepripadá veľmi vhodné. |
||
margin Profil * |
#2 · Zasláno: 31. 3. 2013, 19:21:53
david78:
„Záleží na tom ako sa ten index.php uloží po editnutí? (PsPad)“ Pochopitelně, že na tom záleží, pokud máš web v utf-8, tak musíš soubory v utf-8 (bez BOM) ukládat. |
||
david78 Profil |
Ďakujem. No tuším som sa stým už niekde stretol, len stále nechápem, prečo to ten editor nerobí sám od seba, keď "vidí", že ide o .php
tuším, že html sa tento problém netýka? A ako sa to dá zistiť, že mám ten súbor uložený nesprávne, okrem toho, že na webe sa to prejaví ? |
||
david78 Profil |
#4 · Zasláno: 1. 4. 2013, 13:58:45
Podľa všetkého však problém nieje v tom. PsPad má tú voľbu odškrtnutú a ani český validátor nehlásil túto chybu.
Inak sa to deje vždy v cms Joomla, bez ohľadu na hosting. |
||
H13 Profil |
#5 · Zasláno: 1. 4. 2013, 14:38:57
Ahoj, to by nemělo mít s Joomlou! nic společnýho (troufám si tvrdit, že nemá), ale prostě s tím jak je uloženej php nebo jakejkoliv jinej soubor. Jde o to, že většina souborů je uložena v ANSI, protože soubory např. v Joomle! ani nevytváří výstup - výstup většinou tvoří data z databáze (utf-8) nebo překlady jazykových stringů, např. toto je uloženo v PHP souboru:
JText::_('COM_COMPONENT_RIVER'); a pomocí překladových souborů (ty už jsou uloženy v UTF-8 without BOM) se tvoří výstup. Tedy soubor (většinou PHP) nepotřebuje být uložen v UTF-8 without BOM, stačí když budou v UTF-8 kódovány jen jazykové soubory INI. Tedy, pokud vkládáš nějaký řetězec přímo do souboru PHP a nenecháváš ho překládat pomocí jazykových souborů - tedy, místo "COM_COMPONENT_RIVER" vkládáš do PHP přímo řetězec "ŘEKA", pak u toho souboru samozřejmě musíš změnit kódování z ANSI na UTF-8 without BOM (proč nejsou uloženy soubory primárně v UTF-8 without BOM, viz. vysvětlení výše - při standardním výchozím používání není UTF-8 v souboru potřeba) ... pro různé modifikace a nepoužívání systémových nástroju je prostě zapotřebí toto změnit. |
||
david78 Profil |
#6 · Zasláno: 1. 4. 2013, 16:29:42
ďakujem za ochotu. Všetky súbory .ini som preuložil ako utf-8 bez bom, ale to stále nieje asi tá príčina,lebo kosoštvorce s otáznikom nechcú odísť,
tentokrát testované na wamp serveri ...možno som to nepochopil |
||
Časová prodleva: 5 dní
|
|||
H13 Profil |
#7 · Zasláno: 6. 4. 2013, 20:34:05
Záleží na tom, jestli do souboru PHP vkládáš přímo řetězec s diakritikou nebo ne. Pokud ano, pak se nic v překladových souborech nepřekládá a celej php soubor musí mít kódování v UTF-8 without BOM
Takže jakou variantu: a) PHP soubor ==> echo "Řeka"; b) PHP soubor ==> echo JText::_("COM_XX_RIVER"); u a) musí být kódování PHP souboru v UTF-8 without BOM u b) nemusí být kódování PHP souboru v UTF-8, zato je potřeba, aby byl nahranej jazykovej soubor INI, který obsahuje: COM_XX_RIVER="Řeka" (uložen v UTF-8 - ale jen ten INI, ne ten PHP soubor) |
||
Časová prodleva: 11 let
|
0