Autor | Zpráva | ||
---|---|---|---|
Neas Profil |
#1 · Zasláno: 6. 6. 2011, 15:04:25 · Upravil/a: Neas
ahoj.
rád bych se zeptal, proč bych měl používat header('Content-type: text/html;charset=UTF-8'); když pak v html k nastavení kódování stejně používám tag <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> (v mnoha příkladech na internetu je nejprve použita funkce header() v php a pak ještě html meta-tag) Děkuji za objasnění |
||
pcmanik Profil |
#2 · Zasláno: 6. 6. 2011, 15:08:55
Neas:
Akych vela prikladov? Doteraz som asi ziadne nevydel, a ano je to zbytocne, ak je to uvedene v html. |
||
Chamurappi Profil |
#3 · Zasláno: 6. 6. 2011, 15:21:04
Reaguji na Nease:
Načítáš-li soubor něčím, co nerozebírá HTML (třeba XMLHttpRequest ), informace z <meta> značky se ignoruje. (Zrovna u XHR je UTF-8 výchozí.)
Nastavuješ-li kódování v HTTP hlavičce, můžeš HTML značku vynechat. Kdybys používal BOM, můžeš vynechat obojí. |
||
Colek Profil * |
#4 · Zasláno: 6. 6. 2011, 15:40:23
Chamurappi má pravdu, ještě je dobré nastavit stené kódování souboru (a myslím, že u souborů UTF-8 nefungují PHP headery)
|
||
YoSarin Profil |
#5 · Zasláno: 6. 6. 2011, 15:54:30
Colek:
Pokud vím, tak PHP headery nebudou v UTF-8 fungovat pouze v případě, že UTF-8 soubor bude začínat BOMem a PHP při pokusu poslat header zjistí že už se vypsala nějaká data. |
||
Neas Profil |
#6 · Zasláno: 6. 6. 2011, 16:17:43
rozumím.
Děkuji všem za objasnění. |
||
Časová prodleva: 2 roky
|
|||
actimel Profil * |
#7 · Zasláno: 26. 2. 2013, 16:59:24
Chamurappi:
BOM v žádném případě nepoužívat. Webkitové prohlížeče obsahují bug, který nikdo neřeší. Ukázka: https://code.google.com/p/chromium/issues/detail?id=71224 (povšimněte si data příspěvku - dodnes to není vyřešeno) Zabralo mi asi dva dny, než jsem přišel na to, že PsPad mi tam po reinstalaci počítače začal tyto znaky přidávat. Stránku to špatně parsovalo stejně, jak uvádím výše. Nedávno mi to udělal znova a pak špatně fungovalo jQuery. Opět půl den v ... |
||
Davex Profil |
#8 · Zasláno: 26. 2. 2013, 17:22:25
actimel:
Ten bug neobsahuje ani funkční testcase a podle popisu se mi ho nepodařilo zopakovat, takže se nedivím, že to nikdo neřeší. Můžeš ukázat stránku, kde se popisovaný problém projevuje? |
||
Chamurappi Profil |
#9 · Zasláno: 26. 2. 2013, 17:46:33
Reaguji na actimela:
Podle obrázků bych řekl, že stěžovatel posílal několik BOMů, což je pochopitelně chyba na jeho straně, prohlížeč za to nemůže, není, co opravovat. S jedním BOMem problémy nejsou. Nebojím se ho používat. |
||
actimel Profil * |
#10 · Zasláno: 27. 2. 2013, 10:10:46 · Upravil/a: actimel
Já měl stejný problém. Způsobil mi to PsPad.
Detailům nerozumím. Jen jsem zjistil, že jsem nebyl zdaleka sám, kdo měl nento problém. Nepodařilo se mi zjistit, zda-li za to pokaždé mohl PsPad. Ale někde je velká chyba. Pravděpodobně na obou stranách - jak u vývojáře pspadu, tak u vývojářů prohlížeče. Proč by prázdný znak na začátku měl způsobit takovéto chování? A pokud PsPad skutečně vkládá tyto řídící znaky špatně nebo vícekrát, tak je to zásadní chyba jeho autora, se kterým jsem neměl příliš produktivní diskuzi. Přecházím stejně dneškem na netbeans, takže mi to už je celkem jedno. Ale, někdo, kdo je na danou problematiku větší odborník, by to měl zkontrolovat a napsat mu, pokud to je skutečně tak, že jsou data vkládána špatně. Mě to stálo dva dny. A stane se to určitě dalším lidem. |
||
Tori Profil |
actimel:
V PsPadu se dá vkládání BOM vypnout, tím imho odpovědnost jeho autora končí. Představte si, že máte např. soubor db_connect.php: (BOM)<?php // navazani pripojeni s DB (BOM)<?php include './db_connect.php'; // ..atd. |
||
actimel Profil * |
#12 · Zasláno: 27. 2. 2013, 10:43:15
Tori:
Ano, toto vskutku bude ta příčina, proč je jich víc. Díky. Minimálně by ale podle mého názoru mělo být výchozím nastavením nevkládat řídíci znak. Určitě nejsem sám, kdo problematice natolik nerozumí, aby ihned věděl, kde hledat příčinu. Ano, příspěvek na odkazu to pěkně popisuje. Ale všechny takovéto články mají trošku trhlinu. Když se snaží člověk který vůbec neví, že nějaký BOM exituje (já) najít, proč se prohlížeč chová absolutně ztřeštěně, dost těžko se to hledá. Co takový člověk bude vyhledávat? Výslednou chybu vykreslení. Ty tam vesměs chybí. Proto jsem to hledal tak dlouho. (s googlem se bavím jen anglicky) |
||
_es Profil |
#13 · Zasláno: 27. 2. 2013, 11:03:47
actimel:
„Co takový člověk bude vyhledávat?“ Trebárs si zobrazí si zdrojový kód stránky a nájde v kóde niečo, čo tam nepatrí. |
||
actimel Profil * |
#14 · Zasláno: 27. 2. 2013, 11:31:36
Ale to je to... chrome to třeba ani neukáže. Až v developer tools v záložce elements je vidět, že je něco špatně. Zase takový vůl nejsem. A asi jsi nepochopil cop jsem myslel tou větou, kterou cituješ: co bude vyhledávat na googlu.
|
||
Joker Profil |
#15 · Zasláno: 27. 2. 2013, 11:35:09
actimel:
„Co takový člověk bude vyhledávat? Výslednou chybu vykreslení. Ty tam vesměs chybí.“ Ano, pak by ale neměl najít informace o BOMu, ale informace o té chybě, kde by bylo i uvedeno, že příčinou může být BOM. Například by řešil chybovou hlášku headers already sent by a dostal se na odkázaný záznam naší PHP FAQ, kde se dostane k té informaci o BOMu. |
||
actimel Profil * |
#16 · Zasláno: 27. 2. 2013, 11:38:52 · Upravil/a: actimel
Ano, ale i takto jsem pročetl spousty diskuzí a většinou to nebylo ono. Neříkám, že je něco v nepořádku, jen mě zarazilo, jak málo jsem toho k této problematice našel.
A být toho, že jsem tady napsal, tak bych jednak nevěděl, že těch znaků bylo více a hlavně proč. Toto mě nenapadlo. Možná některým z vás připadám jako největší hlupák, mi to pomohlo. A třeba to i pomůže někomu dalšímu? Díky. |
||
Davex Profil |
#17 · Zasláno: 27. 2. 2013, 12:06:30
actimel:
„Když se snaží člověk který vůbec neví, že nějaký BOM exituje“ To potom není chyba editoru, programovacího jazyka, ani prohlížeče. „Ano, ale i takto jsem pročetl spousty diskuzí a většinou to nebylo ono.“ Kdybys použil český validátor, tak ten by tě upozornil na bludný BOM. |
||
actimel89 Profil |
#18 · Zasláno: 27. 2. 2013, 12:08:24
Tenhle jsem třeba neznal. Proč tady každý předpokládá jednání druhého člověka na základě svých vědomostí?
|
||
donny Profil |
actimel89:
„Tenhle jsem třeba neznal. Proč tady každý předpokládá jednání druhého člověka na základě svých vědomostí?“ Pretože ak chceš programovať je určité minimum ktoré by si mal vedieť a poznať český validátor patrí k vedomostiam niekde na úrovni HTML a CSS! |
||
actimel89 Profil |
#20 · Zasláno: 27. 2. 2013, 12:32:26
Myslíš spíše kódovat, že?
Asi jo... já ale kvůli studiu 5 let nestačil sledovat dění... jen nevím, poč je tak zásadní, aby byl český ;) Vím, že W3C má trhliny... |
||
Davex Profil |
Vědět o českém validátoru není tak zásadní, ale pro zjištění vícenásobného BOMu může sehrát zásadní roli. Ne každý si všimne prázdného řádku nebo dalších projevů, který může nesprávně umístěný BOM způsobit. On by možná mohl být užitečný nějaký univerzálnější nástroj, kterému by se předhodila webová stránka a on by vypsal všechny potencionální problémy, které tam jsou včetně interpretace chyb PHP s návrhem řešení.
Když se hledá neznámá příčina problému, tak je asi nejrychlejší zeptat se zkušenějších na diskusi. |
||
donny Profil |
#22 · Zasláno: 27. 2. 2013, 13:00:16
actimel89:
„Myslíš spíše kódovat, že?“ vyznelo to tak že používaš aj php, preto som na základe obecne známej formulky "PHP is used as the server-side programming language" odvodil výraz programovať.. kľudne ale použival kódovať, skriptovať, tancovať, je to úplne jedno pokiaľ vieš o čom som písal.. actimel89: „já ale kvůli studiu 5 let nestačil sledovat dění...“ stáva sa, preto sú tu také fóra kde sa môžeš spýtať, ale nemal by si sa čudovať že ľudia čo tu odpovedajú odčakávajú že niektoré vieš, alebo si ich na základe ich nápovedy naštuduješ. actimel89: „jen nevím, poč je tak zásadní, aby byl český“ vzhľadom na kvalitu w3c validatora / českého validatora a fakt že píšeš česky mi to príde celkom logické ;) |
||
Chamurappi Profil |
#23 · Zasláno: 27. 2. 2013, 13:03:01
Reaguji na actimela:
„Ale někde je velká chyba. Pravděpodobně na obou stranách - jak u vývojáře pspadu, tak u vývojářů prohlížeče.“ Já bych spíš řekl, že v tomto případě je chyba především na straně PHP, které neumí soubory s BOMem korektně includovat. Dovedu si představit jen zanedbatelně málo situací, kdy by se opravdu hodil include se zachováním BOMů. „Proč by prázdný znak na začátku měl způsobit takovéto chování?“ On to ale není prázdný znak, je to neplatný znak (v případě, že není jednou úplně na začátku souboru, tam smysl má). Prohlížeč nemůže předpokládat, že neplatný znak je mezera… to by bylo špatně. „Asi jo... já ale kvůli studiu 5 let nestačil sledovat dění...“ To tě neomlouvá, český validátor jsem spustil v únoru 2007 :-) Nacházet BOM v tu chvíli tedy ještě neuměl, hlavní motivací bylo definitivně zbořit mýty o XHTML. Dávám ti za pravdu, že zjistit příčinu tohoto problému není úplně snadné. Na rozdíl od donnyho bych si netroufal tvrdit, že znalost českého validátoru patří mezi základní vědomosti. Reaguji na Davexe: „On by možná mohl být byl užitečný nějaký univerzálnější nástroj, kterému by se předhodila webová stránka a on by vypsal všechny potencionální problémy“ Jo, to by bylo pěkné. Už jsem mnohokrát uvažoval, že bych něco takového vytvořil, ale byl to vždy takový mlhavý nápad, protože jsem si nikdy nedal dohromady, co všechno by se mělo kontrolovat. Kdyby byl ten nástroj příliš zevrubný, hrozilo by, že kolem něj vyroste podobný kult jako kolem validity a SEO blábolátorů. |
||
actimel89 Profil |
Já se tady v podstatě na nic neptal. Pro svou práci BOM nepotřebuji. Na to toto téma jsem narazil náhodou a nesouviselo to s mým řešením problému s BOMem. A vzhledem k problémům, které mi to způsobilo jsem to tady napsal, aby Chamurappiho příspěvek někoho nepřivedl do podobných pekel, jako jsem se dostal já. Jsem rád, že to bylo rozebráno a uvedeno na pravou míru. A až na to tady někdo narazí, bude alespoň mít větší přehled.
Jinak se pohybuju spíše na stackOverflow a anglických fórech a stránkách. Když jsem měl tyhle problémy, bylo to poprvé, kdy jsem tam musel položit otázku, vždy jsem si vše potřebné našel, buď tam nebo jinde. A právě proto mě to asi nutí z toho dělat takovou vědu. Možná jsem ten poslední člověk na světě, co to neví ... ale nemyslím si to. |
||
donny Profil |
#25 · Zasláno: 27. 2. 2013, 13:35:55
Chamurappi:
„SEO blábolátorů.“ Dávno som sa v práci tak dobre nezasmial :) |
||
Davex Profil |
#26 · Zasláno: 27. 2. 2013, 15:18:22
Chamurappi:
„Já bych spíš řekl, že v tomto případě je chyba především na straně PHP, které neumí soubory s BOMem korektně includovat.“ Ono PHP už asi devět let umí BOM ignorovat (nebo-li neposílat do výstupu), ale byla to nenápadná volba při kompilaci, takže to nikdo nepoužíval. Od PHP 5.4 už je to standardní součást, která se ale musí zapnout volbou zend.multibyte = On , takže to asi zase nikdo nebude používat.
|
||
Časová prodleva: 13 let
|
0