K: A htmlspecialchars-ról szólva, mi a harmadik paraméter, az encoding jelentősége? V: Az, hogy fixen 'ISO-8859-1'-et kell odaírni, hogy jól működjön, függetlenül attól, hogy milyen kódolást használsz. Ez is volt az alapértelmezés az 5.4-es verzió előtt, de akkor megváltoztatták 'UTF-8'-ra, ami azt ereményezi, hogy az UTF-8-ként nem értelmezhető input-stringre üres stringet ad válaszul. (Hibaüzenet nélkül persze.)
Azért azt tegyük hozzá, hogy az ilyen &-os userek szoktak rácsodálkozni arra, hogy "nem megy az õ!". De megy, csak éppen azt csinálja, amit kell csinálnia, nem pedig azt, amit szeretnénk, ha csinálna.
Felejtsd el a második <head>-et, egyébként a második változat jó lesz. Ha mindent kiírsz &xxx; kódokkal, akkor mindig, minden körülmények között jó lesz. Charsettel csak akkor kell foglalkoznod, ha valamiért nem tetszik az ilyen kód (valóban hosszabb és a forrásban kevésbé jól olvasható, cserébe viszont bombabiztos).
Én a kezdők kezdője vagyok a HTML terén. Rám lett bízva, hogy a cég honlapját frissítsem, indulva a nulláról. Azért már valameddig eljutottam, de most az ékezeteknél megakadtam. Ezt szeretném leírni: A Decanter Magazin a Dereszlánál.
Ez volt az első próbálkozásom:
<head> <base target="_blank"> </head> <body> <p> <a href="hun/menu_tartalom/hirek/miller.pdf" target="_blank">A Decanter Magazin a Dereszlánál<a/> </p>
PHP-ben előfordulhat (eléggé le van maradva ezen a téren, ez igaz), bár ezt nem láttam előfeltételnek kitűzve, például APS.NET-nél nincs ilyen baj (PHP 6-nál sem lesz már, remélhetőleg, ahogy nézem az ígéreteket). Én is sokat dolgozom PHP-vel, persze, ezzel meg kell küzdeni, de a megoldás akkor sem az, hogy ragaszkodunk a régi, ma már bizony gányoltnak nevezhető megoldásokhoz. Ha felhasználóval kapcsolatot tartasz, adatbeviteli mezők, bármi hasonló, akkor ma már alapvetően unikódot kapsz mindenhol, a weboldalnak kell ehhez alkalmazkodnia, nem fordítva.
Nem véletlenül mondtam, amit mondtam, de hát te írod, a te dolgod. Én továbbra is fenntartom, hogy a hátteret nem ismerő, nem ismertető egymondatos válaszok nem elegendőek arra, hogy a kérdező megértse a probléma lényegét, és ennek megfelelően intelligens döntést hozzon, toldozgat-foldozgat-e tovább egy idejétmúlt megoldást, vagy még időben gondoskodik arról, hogy minden egységesen és a jövőt is kiálló módon működjön.
Azért ennyire nem fenékig tejfel az élet, ha változó hosszúságú kódolást használunk, akkor például a stringkezelő függvényekhez is hozzá kell nyúlnunk (Q0002).
Értem, de amint írtam, akkor is hibásnak tartom a megközelítést. Egy ma írt, mai kérdésekre felelő leírásban első, második és harmadik helyen az UTF-8-at kell említeni, mint egyedül univerzális és minden körülmények között megbízható kódolást (különösen azért, mert magyar a nyelvünk, ahol ékezetes problémák vannak).
Ezzel szemben te sokadlagosnak említed, éppen fordítva, mint kellene.
A 1252-t mint történelmileg kialakult, mára lehetőség szerint teljesen kerülendő kódlapot kell megemlíteni csak. Pontosabban, minden kódlapot kerülendőnek kell megemlíteni, mert mindegyik kontextusfüggő kényszermegoldás volt a tényleges, általános, minden körülmények között használható megoldás megjelenése előtt.
Akkor nem volt elég világos, hogy mi is ennek a FAQ-nak a célja; ez nem valamiféle bevezető és kedvcsináló akar lenni a különféle kódolásokhoz, hanem életből vett konkrét kérdésekre adott válaszok gyűjteménye... a prog.hu-n naponta van egy olyan kérdés, hogy 'nem mennek az ékezetes a szájtomon, pedig már összevissza kapkodtam, mindent átállítottam és vissza'...
Legutóbb az utf7-et hozta fel valaki, bár később kiderült, hogy tévedésből..
Csak a lényeget nem mondod el továbbra sem, amit például én röviden összefoglaltam itt alant, hogy mi ez az egész Unicode, mire való, miért alakult ki, valamint mik voltak ezek a különféle kódlapok, milyen igények és kényszerítő peremfeltételek hozták létre őket. Vagyis, az egész lényege hiányzik – ehhez képest az, hogy UTF-7-ben hogy néz ki a tükörfúrógép, érdekes, de huszadlagos kérdés.