Autor Zpráva
david78
Profil
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 *
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
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
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
ď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
H13
Profil
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)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: