Moro! Tossa oli vähän onkelmia ton nettisivukokeilun kanssa. Se sivu näyttää (vähän pois otettuna) tältä:
kokeiluURL kirjoitti:
This page contains the following errors:
error on line 11 at column 4: Encoding error
Below is a rendering of the page up to the first error.
Lähekoodin tein muistiolla, ja kun kokeilin sitä tuo ilmoitus tuli näyttöön. Muistiolla se näyttää tältä:
<!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> <title>KUPA!</title> </head> <body> <li><a href="Kupa.com.xhtml">Etusivu</a></li> <li><a href="myymme.xhtml">Myymme</a></li> <li><p>Projektit</p></li> <li><a href="ohjeet.xhtml">Ohjeet</a></li> <p>Täällä käsitellään projektit.</p> </body> </html>
Niin ja kun kokeilin sen toimintaa niin sen lähekoodi on seuraava:
<!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> <title>KUPA!</title> </head> <body> <li><a href="Kupa.com.xhtml">Etusivu</a></li> <li><a href="myymme.xhtml">Myymme</a></li> <li><p>Projektit</p></li> <li><a href="ohjeet.xhtml">Ohjeet</a></li> <p>T
Joo, ja aina kun muokkaan sitä muistiolla niin tallennan sen myös.
Osaisko joku auttaa?
Eli kuolee ensimmäiseen ä-kirjaimeen. Purkkaratkasuna voit korvata jokaisen ä-kirjaimen merkkijonolla ä
Oikeaa ratkasua en osaa sanoa kun en tunne kehitysympäristöäs. Minkälainen palvelin sulla on? Entä millä kirjotat koodis? Eikun senhän sanoitki, no sitten; mikä formaatti sulla on valittuna siinä tallennusdialogissa kun otat "Tallenna nimellä"?
Käytä unicodea.
Siis ensin luon uuden textitiedoston. Sitten kirjotan sinne koodin. Sitten laitan valikosta "Tallenna nimellä". Sitten laitan nimeksi vaikka "Testi.xhtml". Sitten laitan tiedostotyypiksi "Kaikki tiedostot". Sitten vain napautan "Tallenna". Sitten laitan sen pois. Menen vaikka Resurssienhallinnasta sinne kansiooon minne sen tallensin. Sitten tuplaklikkaan sitä ja sivu avautuu!!!
Mitä enkoodausta käytät tiedostoissa?
En ole käyttänyt Notepadia pitkään aikaan, mutta sen tallennusdialogissa taisi olla mahdollisuus vaihtaa käyttetävää enkoodausta.
Laita head-tagin sisään ilmoitus merkistöstä. Notepadilla se on ainakin XP:ssä oletuksena ISO-8859-1. Vistan ja 7:n Notepad-versioissa voi tallennettaessa muuttaa merkistön myös UTF-8:ksi.
Mulla on XP ja siinä EI ole tota ISO-8859-1. Mutta siinä on vaihtoehdot:
ANSI
Unicode
Unicode big endian
UTF-8
Muta se ä autto.
Mulla on XP ja siinä EI ole tota ISO-8859-1. Mutta siinä on vaihtoehdot:
ANSI
Unicode
Unicode big endian
UTF-8
Muta se ä autto.
Ansi on just toi ISO-8859-1.
Älä käytä noita HTML-entiteettejä vaan laita merkistö kuntoon. Unicodea vaan kehiin.
Noista vaihtoehdoista EI Unicode tai Unincode big endian vaan UTF8, joka on siis unicodea, mutta 8-bittiseksi koodattuna.
Okei.
Arvailun sijaan kannattaisi nyt kysyjän kertoa sivun URL. Ratkaisevaa on nimittäin se, mitä palvelin kertoo HTTP-otsakkeissa. Sen jälkeen tiedetään, mitä pitää valita Muistiossa (ANSI vai UTF-8 – muissa vaihtoehdoissa ei toki ole mieltä).
Tietenkin ä auttaa, koska se toimii koodauksesta riippumatta, mutta sellainen on todella kömpelöä.
P.S. öANSIö ei ole sama kuin öISO-8859-1ö, vaikka skandien osalta onkin sama. Se on Suomessa yleensä windows-1252, muualla ehkä jotain muuta.
Yucca kirjoitti:
Arvailun sijaan kannattaisi nyt kysyjän kertoa sivun URL. Ratkaisevaa on nimittäin se, mitä palvelin kertoo HTTP-otsakkeissa. Sen jälkeen tiedetään, mitä pitää valita Muistiossa (ANSI vai UTF-8 – muissa vaihtoehdoissa ei toki ole mieltä).
ErroR++ kirjoitti:
Siis ensin luon uuden textitiedoston. Sitten kirjotan sinne koodin. Sitten laitan valikosta "Tallenna nimellä". Sitten laitan nimeksi vaikka "Testi.xhtml". Sitten laitan tiedostotyypiksi "Kaikki tiedostot". Sitten vain napautan "Tallenna". Sitten laitan sen pois. Menen vaikka Resurssienhallinnasta sinne kansiooon minne sen tallensin. Sitten tuplaklikkaan sitä ja sivu avautuu!!!
Othnos kirjoitti:
Yucca kirjoitti:
Arvailun sijaan kannattaisi nyt kysyjän kertoa sivun URL. Ratkaisevaa on nimittäin se, mitä palvelin kertoo HTTP-otsakkeissa. Sen jälkeen tiedetään, mitä pitää valita Muistiossa (ANSI vai UTF-8 – muissa vaihtoehdoissa ei toki ole mieltä).
ErroR++ kirjoitti:
Siis ensin luon uuden textitiedoston. Sitten kirjotan sinne koodin. Sitten laitan valikosta "Tallenna nimellä". Sitten laitan nimeksi vaikka "Testi.xhtml". Sitten laitan tiedostotyypiksi "Kaikki tiedostot". Sitten vain napautan "Tallenna". Sitten laitan sen pois. Menen vaikka Resurssienhallinnasta sinne kansiooon minne sen tallensin. Sitten tuplaklikkaan sitä ja sivu avautuu!!!
Jos tarkoituksesi oli sanoa (sanaakaan sanomatta, vain lainaillen), että kysyjä ei ole mielestäsi lainkaan edes yrittänyt tehdä nettisivua, kuten tallentaa tiedostoa (edes omassa koneessa olevaan) HTTP-palvelimeen, niin olisiko kannattanut lisätä, että silloin jokainen mahdollinen ratkaisu tähän ongelmaan on vain näennäinen? Nettisivu kun väistämättä on jossain palvelimessa, ja silloin koodauksen todellakin pitää olla sen mukainen, mitä palvelin ilmoittaa.
Yucca kirjoitti:
P.S. öANSIö ei ole sama kuin öISO-8859-1ö, vaikka skandien osalta onkin sama. Se on Suomessa yleensä windows-1252, muualla ehkä jotain muuta.
No Windows-1252 on tasan oikein, mutta on se lähempänä ISO-8859-1 kuin vain pelkkien skandien osalta. Itse asiassa kun nyt kuitenkin ollaan www-sivuja tekemässä, niin HTML5 -speksi jopa vaatii, että jos sivu ilmoittaa olevansa ISO-8859-1 koodattu, niin selaimen pitää käsitellä se windows-1252 merkistöä käyttäen. Tuntuu kyllä uskomattomalta, mutta niin tuossa lukee.
Tosin näin päin toimimisesta ei ole paljoa haittaa, koska Windows-1252 sisältää kaikki ne merkit, mitkä ISO-8859-1:ssä on määritelty. Tietenkin ISO-8859-1:stä puuttuvien merkkien käyttäminen ISO-8859-1 merkatuissa tekstissä on huono juttu. Käytännössä varmaan suurin puute on € -merkki.
Grez kirjoitti:
HTML5 -speksi jopa vaatii, että jos sivu ilmoittaa olevansa ISO-8859-1 koodattu, niin selaimen pitää käsitellä se windows-1252 merkistöä käyttäen. Tuntuu kyllä uskomattomalta, mutta niin tuossa lukee.
Eh?!
No ei sillä, etteikö Unicodea kannattais käyttää muutenki aina, mutta uskomatonta scheissea tuossakin standardissa.
Yucca kirjoitti:
Jos tarkoituksesi oli sanoa (sanaakaan sanomatta, vain lainaillen), että kysyjä ei ole mielestäsi lainkaan edes yrittänyt tehdä nettisivua, kuten tallentaa tiedostoa (edes omassa koneessa olevaan) HTTP-palvelimeen, niin olisiko kannattanut lisätä, että silloin jokainen mahdollinen ratkaisu tähän ongelmaan on vain näennäinen? Nettisivu kun väistämättä on jossain palvelimessa, ja silloin koodauksen todellakin pitää olla sen mukainen, mitä palvelin ilmoittaa.
Juurikin näin.
Kertoisitko tietämättömälle (minulle) miten tiedoston avaaminen suoraan selaimeen ja palvelimen kautta eroavat toisistaan puhtaan html-merkkauksen osalta?
Othnos kirjoitti:
Kertoisitko tietämättömälle (minulle) miten tiedoston avaaminen suoraan selaimeen ja palvelimen kautta eroavat toisistaan puhtaan html-merkkauksen osalta?
Palvelin ilmoittaa kaikenlaista dokumentin ulkopuolista tietoa ns. headereissa. Esim. tämä ohjelmointiputka antaa seuraavat tiedot, jotka eivät sisälly itse html-dokumenttiin:
Connection:Keep-Alive Content-Type:text/html Date:Wed, 18 May 2011 21:48:21 GMT Keep-Alive:timeout=15, max=100 Server:Apache Transfer-Encoding:chunked
No, tämä nyt oli sikäli huono esimerkki, koska tässä ei ole merkistöä kerrottu.
Kävin hakemassa W3.Orgin etusivun, ja siellä oli tällaiset tiedot:
Accept-Ranges:bytes Cache-Control:max-age=600 Connection:close Content-Length:33335 Content-Location:Home.xhtml Content-Type:application/xhtml+xml; charset=utf-8 Date:Wed, 18 May 2011 21:50:56 GMT ETag:"8237-4a385dc5e7b80;89-3f26bd17a2f00" Expires:Wed, 18 May 2011 22:00:56 GMT Last-Modified:Wed, 18 May 2011 05:07:10 GMT P3P:policyref="http://www.w3.org/2001/05/P3P/p3p.xml" Server:Apache/2 TCN:choice Vary:negotiate,accept
Kuten huomaan, tuossa Content-Type -kohdassa määritellään, että merkistö on utf-8. Tätä määritystä ei tiedetä, jos tiedosto vaan avataan levynkulmalta.
Mutta eikös Content-Type ilmoiteta meta-tagina xhtml:n headereissa? Itselläni ilman meta-tagia antaa merkistöksi ISO-8859-1, mutta seuraavalla koodilla UTF-8.
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Ja juurikin pelkästään tiedoston avaamisella selaimeen.
Niin, tuohan on nimensä mukaisesti http-equiv, eli tarkoitettu ajamaan ilman palvelinta saman asian kuin jos laitaisit sen palvelimelta. Mutta kun se sivu on kuitenkin todennäköisesti tarkoitus laittaa sinne palvelimelle, niin mitäpä tuumaat seuraavasta:
http://http://grez.info/putka/othnos/
Jos katsot "view source" niin tuolla lukee meta tagissa UTF8.. :D Sitten taas jos sen tallettaa (ainakin Chromessa) levylle, niin se muuttuukin ISO-8859-1:ksi. Ja jos taas tuon alkuperäisen tiedoston tallettaa suoraa levylle niin että meta tagi UTF8:sta jää ja sen avaa, niin tekstit näkyy väärin.
Eli pointti on, että kun selain lataa sivun palvelimelta, niin selainta ei juuri vähempää voisi tuo meta tagi kiinnostaa.
Othnos kirjoitti:
Mutta eikös Content-Type ilmoiteta meta-tagina xhtml:n headereissa? Itselläni ilman meta-tagia antaa merkistöksi ISO-8859-1, mutta seuraavalla koodilla UTF-8.
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ja juurikin pelkästään tiedoston avaamisella selaimeen.
Riippuu ihan siitä, miten XHTML parsitaan. Jos sen content-typeksi asettaa text/html:n, niin tällöin selain kuuntelee myös tuota metatagia. Jos content-type taasen on application/xhtml+xml tai joku muu XML-tyyppi, niin metatagilla ei tee yhtään mitään.
XML:n enkoodauksen voi asettaa prologissa, joka siis tulee aivan dokumentin alkuun (ei edes white-spacea eteen):
<?xml version="1.0" encoding="utf-8"?>
Content-type voi vaikuttaa myös oletusmerkistöön, sillä normaalisti selaimet arvaavat sisällön olevan ISO-enkoodattua, mutta XML-standardissa oletusmerkistö onkin UTF-8.
Grez: Kyllä sillä metatagillakin on väliä, jos palvelin ei lähetä merkistöä headereiden seassa. Taitaa omakin palvelimeni tehdä näin.
Joo pitäis ennemmin älytä että siihen eteen tulee se "<?xml version="1.0" encoding="utf-8"?>". Ei auta.
Grez kirjoitti:
HTML5 -speksi jopa vaatii, että jos sivu ilmoittaa olevansa ISO-8859-1 koodattu, niin selaimen pitää käsitellä se windows-1252 merkistöä käyttäen.
Niinkö tuo
HTML5 draft kirjoitti:
When a user agent would otherwise use an encoding -- to either convert content to Unicode characters or convert Unicode characters to bytes
tulkitaan? Jäi itselle hieman epäselväksi. Kääntävätkö selaimet aina sivut ensin Unicodeksi, viitataanko tässä tällä siihen?
The Alchemist kirjoitti:
Grez: Kyllä sillä metatagillakin on väliä, jos palvelin ei lähetä merkistöä headereiden seassa. Taitaa omakin palvelimeni tehdä näin.
Joo niin unohdin siis toistaa sen puheenaiheen, eli kuten Yucca sanoi, että tarkistaa palvelimen lähettämän otsakkeen.
Eli siis, kannattaa katsoa lähettääkö palvelin jonkin merkistön otsakkeissa. Jos lähettää niin selain ei välitä metatagista.
Oli miten oli, W3.org suosittelee (?) käyttämään kyseistä meta-tagia lähetettiin tieto headereissa eli ei. Samassa kappaleessa mainitaan myös, että kannattaa käyttää headereissa ilmoitusta jos vain pystyy. Mielenkiintoista luettavaa merkistöistä muutenkin.
Yucca kirjoitti:
Nettisivu kun väistämättä on jossain palvelimessa, ja silloin koodauksen todellakin pitää olla sen mukainen, mitä palvelin ilmoittaa.
Eli mikä koodaus täällä Ohjelmointiputkassa on, minkä palvelin ilmoittaa?
Grez kirjoitti:
Mutta kun se sivu on kuitenkin todennäköisesti tarkoitus laittaa sinne palvelimelle, niin mitäpä tuumaat seuraavasta:
Havainnollistaa hyvin, että headereilla on isompi prioriteetti, kuin dokumentissa olevalla merkkauksella.
Mutta jos tarkoituksesi on käyttää tiettyä merkistöä ja esimerkiksi palveluntarjoaja vaihtuu, eikä merkistöä ilmoiteta headereissa taikka dokumentissa, saadaan taas ihastella ?-merkkejä.
Othnos kirjoitti:
Yucca kirjoitti:
Nettisivu kun väistämättä on jossain palvelimessa, ja silloin koodauksen todellakin pitää olla sen mukainen, mitä palvelin ilmoittaa.
Eli mikä koodaus täällä Ohjelmointiputkassa on, minkä palvelin ilmoittaa?
ISO-8859-1, koska muuta ei ilmoiteta. Tämän olisit varmaan itsekin saanut selvitettyä hetkessä hakukoneella.
No sitten olis toinen ongelma. Sehän on tietysti kirjautumisessa. En saa niitä textijutskia näkyviin paitsi tunnuslaatikon.
ErroR++ kirjoitti:
No sitten olis toinen ongelma. Sehän on tietysti kirjautumisessa. En saa niitä textijutskia näkyviin paitsi tunnuslaatikon.
Mitäs "textijutskia" haluat saada näkyviin? Koodin näyttäminen yleensä helpottaa kummasti.
Metabolix kirjoitti:
Othnos kirjoitti:
Yucca kirjoitti:
Nettisivu kun väistämättä on jossain palvelimessa, ja silloin koodauksen todellakin pitää olla sen mukainen, mitä palvelin ilmoittaa.
Eli mikä koodaus täällä Ohjelmointiputkassa on, minkä palvelin ilmoittaa?
ISO-8859-1, koska muuta ei ilmoiteta. Tämän olisit varmaan itsekin saanut selvitettyä hetkessä hakukoneella.
Oikea vastaus on: ISO-8859-1, koska se ilmoitetaan metatagilla. Jos mitään määritystä ei olisi tehty, niin selain voisi tulkita merkistön ihan miksi tahansa. Firefox ainakin antaa käyttäjän valita oletusmerkistön, joka toki on defaulttina tuo sama.
The Alchemist kirjoitti:
Oikea vastaus on: ISO-8859-1, koska se ilmoitetaan metatagilla.
Anteeksi kamalasti, tulkitsin, että "palvelimen ilmoittama" tarkoittaisi tässä keskustelussa HTTP-otsikossa olevaa. Sivun sisältöönhän HTTP-palvelimella ei lähtökohtaisesti ole vaikutusta. Sitä paitsi Putkassa on myös tavallisia tekstitiedostoja, joiden merkistö ei käy sisällöstä ilmi.
The Alchemist kirjoitti:
Jos mitään määritystä ei olisi tehty, niin selain voisi tulkita merkistön ihan miksi tahansa.
Nyt taidat olla väärässä.
RFC 2616 (HTTP/1.1) kirjoitti:
The "charset" parameter is used with some media types to define the character set (section 3.4) of the data. When no explicit charset parameter is provided by the sender, media subtypes of the "text" type are defined to have a default charset value of "ISO-8859-1" when received via HTTP.
Myös selaimen vaihtotoiminnosta on hauska maininta:
RFC 1945 (HTTP/1.0) kirjoitti:
Note: Many current HTTP servers provide data using charsets other than "ISO-8859-1" without proper labelling. This situation reduces interoperability and is not recommended. To compensate for this, some HTTP user agents provide a configuration option to allow the user to change the default interpretation of the media type character set when no charset parameter is given.
Metabolix kirjoitti:
Anteeksi kamalasti, tulkitsin, että "palvelimen ilmoittama" tarkoittaisi tässä keskustelussa HTTP-otsikossa olevaa.
Tulkitsit aivan oikein ja hakusanat viittasivat juurikin kyseiseen asiaan.
Mutta väittäisin, että Ohjelmointiputka olisi aika kuollut paikka jos jokainen uudempi käyttäjä googlettaisi alusta loppuun kysymyksensä. Jos tämä on forumin tarkoitus niin täytyypä olla tarkempi "hakukoneiden" kanssa.
Metabolix kirjoitti:
The Alchemist kirjoitti:
Oikea vastaus on: ISO-8859-1, koska se ilmoitetaan metatagilla.
Anteeksi kamalasti, tulkitsin, että "palvelimen ilmoittama" tarkoittaisi tässä keskustelussa HTTP-otsikossa olevaa. Sivun sisältöönhän HTTP-palvelimella ei lähtökohtaisesti ole vaikutusta.
Annoit vastaukseksi jonkun randomin Google-linkin HTTP-protokollan määrityksiin. Tällä ei ole kuitenkaan juurikaan tekemistä kysymyksen kanssa, koska Putkan nettisivuilla enkoodaus on määritelty metatagein. Kysymys oli sitä paitsi sarkastista saivartelua...
lainaus:
The Alchemist kirjoitti:
Jos mitään määritystä ei olisi tehty, niin selain voisi tulkita merkistön ihan miksi tahansa.
Nyt taidat olla väärässä.
En ole. Tämän voi helposti todeta aukaisemalla Firefoxin ja kokeilemalla. Vaatii toki senkin, että kappaleet luetaan loppuun eikä pätkitä kontekstia pois. Lainaamasi määritelmätkin vahvistivat väitteeni.
The Alchemist kirjoitti:
Lainaamasi määritelmätkin vahvistivat väitteeni.
Lainaamani määritelmät sanovat aivan yksiselitteisesti, että kun HTTP-protokollalla vastaanotetaan tekstiä, jos muuta merkistöä ei ilmoiteta, merkistön kuuluu olla ISO-8859-1. Jos olet eri mieltä, osoita kohta, jossa sanotaan muuta.
Jos tarkoituksesi olikin väitellä siitä, mitä kaikkea poikkeavaa palvelin ja selain teknisesti voivat tehdä, saat kyllä väitellä yksiksesi.
The Alchemist kirjoitti:
En ole. Tämän voi helposti todeta aukaisemalla Firefoxin ja kokeilemalla. Vaatii toki senkin, että kappaleet luetaan loppuun eikä pätkitä kontekstia pois. Lainaamasi määritelmätkin vahvistivat väitteeni.
Olet. Vaikka siellä olisi HTTP-headerit, XML-encoding ja http-equiv annettuna, silti käyttäjä voi ihmetellä sivua ihan vapaasti valitsemallaan merkistöllä tai ohjelmalla. Tuollaisella selaimen ominaisuudella ei todellakaan ole mitään tekemistä minkään standardin kanssa. Kyseessä on selaimen käyttäjälle tarjoama paikko-mahdollisuus, jotta sivu saataisiin näytettyä.
Ei se oikeastaan edes ole määritelmien vastaista. Tuossahan puhutaan mikä selaimen tulee tulkita merkistön oletuksena olevan. Jos käyttäjä on sanonut että haluaa selaimen poikkeavan oletuksesta, niin silloinhan selain toimii sekä oikein että speksin mukaan vaikka käyttäisikin muuta koodausta.
Lisäksi kun ottaa huomioon, että käytännössä kaikki selaimet antaa käyttäjän valita koodauksen, niin kyseessä ei myökään ole yksittäisen selaimen asia.
Toisaaltahan täällä keskusteltiin siitä, että miten sivun saa näkymään oikein "normaalitilanteessa", joten kaikenlainen jauhaminen siitä, että miten jollakin normaalista poikkeavalla asetuksella jokin selain toimii on melko epäolennaista, kuten sekin mitä speksissä lukee.
Grez kirjoitti:
Ei se oikeastaan edes ole määritelmien vastaista. Tuossahan puhutaan mikä selaimen tulee tulkita merkistön oletuksena olevan.
Heh, hassu. Mistä lähtien ohjelmistotekninen termi default on noin tulkittu? :D
Oletus tarkoittaa, että se merkistö on ISO-8859-1 ellei muuta ilmoiteta. Selaimen käyttäjälle ei speksissä anneta keinoa ilmoittaa merkistöä. Se on ihan puhtaasti selainten ominaisuus. Löytyy toki kaikista PC-selaimista, mutta esim. mobiilissa vähän harvinaisempi moinen debug-toiminto ;-)
Eli oma tulkintasiko on, että kaikki selaimet toimii väärin kun antavat käyttäjän valita jonkin muun kuin palvelimen kertoman merkistön?
Grez kirjoitti:
Eli oma tulkintasiko on, että kaikki selaimet toimii väärin kun antavat käyttäjän valita jonkin muun kuin palvelimen kertoman merkistön?
Kyllä, näin. W3C:n speksi sanoo yksikäsitteisesti, mitä merkistöä selaimen pitää käyttää. Muu on luonnollisesti speksin vastaista toimintaa. Eihän siitä mitään haittaa ole kenellekään, että monet selaimet tarjoaa mahdollisuuden kokeilla löytää oikea merkistö rikkinäisellä sivulla. Sillä nyt vaan ei ole speksin kanssa mitään tekemistä.
Metabolix kirjoitti:
The Alchemist kirjoitti:
Lainaamasi määritelmätkin vahvistivat väitteeni.
Lainaamani määritelmät sanovat aivan yksiselitteisesti, että kun HTTP-protokollalla vastaanotetaan tekstiä, jos muuta merkistöä ei ilmoiteta, merkistön kuuluu olla ISO-8859-1. Jos olet eri mieltä, osoita kohta, jossa sanotaan muuta.
Jos tarkoituksesi olikin väitellä siitä, mitä kaikkea poikkeavaa palvelin ja selain teknisesti voivat tehdä, saat kyllä väitellä yksiksesi.
HTTP-pyyntö ja HTML-dokumentti ovat aivan eri abstraktion tasoilla ja niillä on omat sääntönsä. XML:nkin oletusmerkistö on aina UTF-8, sanoi joku dokkari mitä tahansa alemman tason tiedonvälitysmekanismeista.
Minä en myöskään väittele mistään teoreettisista häxeistä vaan kerroin miten asiat ovat. Käyttäjä on vapaa valitsemaan merkistön, se on fakta.
Othnos kirjoitti:
Mitäs "textijutskia" haluat saada näkyviin? Koodin näyttäminen yleensä helpottaa kummasti.
No siis tässä:
<form action="varmistus" method="post"> <input type="text" name="tunnus" value="Tunnus"> <input type="password" name="salasana" value="salasana"> <input type="submit" name="kirjaudu" value="salasana"> </form>
Tässä on varmaan koko ErroR++:n jutussa kysymys siitä että tiedostopääte (ja myös doctype vaikka sillä tuskin on väliä) väittää tiedoston olevan xhtml:ää. Kun tiedosto avataan selaimeen suoraan levyltä, ei parempaa tietolähdettä (http-headeri tai meta-tagi) tässä ole saatavilla joten selaimet parsivat dokumentin xml:nä (todennäköisesti application/xhtml+xml:nä, en saanut tuota ulos selaimistani). Tässä keskustelussa näytetyt lähdekoodipätkät eivät kuitenkaan ole validia eikä hyvinmuodostettua xml:ää (eikä siis myöskään xhtml:ää) ja se aiheuttaa nuo virheet ja "textijutskien" näkymättömyydet.
Ensimmäinen virhe johtunee siitä että kuten mainittu, tiedosto oli tallennettu ANSI-merkistöllä, mutta sitä ei tiedostossa kerrota. XML:ssä oletus on utf8 joten ä:n tullessa vastaan tulee virhe.
Toinen virhe on nuo input-elementit joita ei ole suljettu.
Testasin tätä WIN7:ssa Chrome:lla ja IE9:llä. Tosiaankin tiedostopäätteen muuttaminen xhtml:stä html:ksi aiheutti sen että selaimet antoivat em. virheet "anteeksi".
Koska ErroR++:lla ei näytä olevan kunnollista tuntemusta xhtml:n ja html:n eroista, suosittelen että vaihdat tiedostopäätteiksi html (ja jos haluat olla tarkka niin doctypen myös vastaavaksi vaikka sillä tuskin on mitään käytännön merkitystä), jolloin elämäsi helpottuu melkoisesti. En oikein edes keksi mitään hyötyä mitä voisit saavuttaa xhtml:ää käyttämällä.
PS: Ihmettelen tuota selainten käyttäytymistä kyllä hieman siltä osin että jos ne kerran parsivat sivun xml:nä niin miksi ne näyttävät siitä yhtään mitään jos dokumentti ei ole hyvinmuodostettu. Eikös speksi sano tästä jotain tyyliin että yhdenkin sellaisen virheen ilmaantuessa joka aiheuttaa että dokumentti ei ole hyvinmuodostettu koko dokumentti on virheellinen eikä sitä saa tulkita lainkaan?
Tukki kirjoitti:
Eikös speksi sano tästä jotain tyyliin että yhdenkin sellaisen virheen ilmaantuessa joka aiheuttaa että dokumentti ei ole hyvinmuodostettu koko dokumentti on virheellinen eikä sitä saa tulkita lainkaan?
No eikös täällä jo esitetty näkemyksiä että selaimet toimii väärin.
Taitaa olla aika pitkä perinne sillä, että selaimista tehdään käyttäjäystävällisempiä kuin speksit edellyttäisi. Kuitenkin ne pari nörttiä jotka itkee aiheesta on pientä verrattuna niihin miljoonaan käyttäjään jotka itkee selaimesta kun vika on sivussa.
Grez kirjoitti:
Kuitenkin ne pari nörttiä jotka itkee aiheesta on pientä verrattuna niihin miljoonaan käyttäjään jotka itkee selaimesta kun vika on sivussa.
Muuten melkein hyväksyisin tämän selityksen, mutta xml ei kyllä ole niiden miljoonan käyttäjän kieli. Se on niiden parin nörtin kieli, jotka haluavat hyödyntää sitä johonkin tiettyyn erityistarkoitukseen. Siksi suosittelin alkuperäisellekin kirjoittajalle html:ään siirtymistä.
Testasin muuten tätä esimerkkiä vähän lisää. Firefox toimii niinkuin oletin eli kun siihen avataan virheellinen dokumentti xhtml-päätteellä suoraan levyltä tai application/xhtml+xml dokumentti http-palvelimelta se näyttää ainoaastaan virheilmoituksen eikä mitään muuta dokumentista. Varmaan aiemmin olen vastaavaa kokeillut ainoastaan Firefoxilla ja siitä on ehkä jäänyt käsitys että kaikki selaimet toimisivat samoin.
Xml ei ole parin nörtin kieli, vaan esimerkiksi html on myös xml:llää. Jos olen oikein ymmärtänyt (älkää tappako jos olen väärässä) xml on yläkäsite kyseisellä perjaatteella toimiville merkkauskielille.
Edit: Googletin vähän ja vaikuttaa pahasti siltä että olen väärässä.
Joo, olet väärässä. Xhtml on tehty juuri sitä varten, että se olisi xml:ää. Html ei siis sitä automaattisesti ole, joskin on mahdollista kirjoittaa html-dokumentti, joka on myös validia xml:ää.
Sinänsähän html:ssä on toki samaa ideaa, mutta siinä ei mm. suljeta kaikkia avaavia tageja. Esim. img- ja input-tagit.
Mutta mitä tulee tuohon että nörtit vs muut, niin kyllähän asioista tietämättömätkin saattaa koodailla xhtml:ää. Varsinkin kun se oli jossain vaiheessa "viimeisin" versio, ja varsinkin asioita tuntemattomat herkästi tykkää käyttää "uusinta versiota", vaikka vanhempi sopisi tarpeeseen paremmin.
Lisäksi on mahdollista, että jotkut toistaitoiset on vääntäneet esim. PHP:llä rakentuvia xhtml-sivuja. Ja vaikka sellaiset aluksi tai tekijän omissa testeissä olisi validia, niin ne saattaa olla rikki myöhemmässä vaiheessa. Ilmeisesti sitten joidenkin selainten tekijät on katsoneet tarpeelliseksi että näiltäkin sivuilta näytetään se tieto, mikä on mahdollista, eikä pelkkää virheilmoitusta.
Grez kirjoitti:
Taitaa olla aika pitkä perinne sillä, että selaimista tehdään käyttäjäystävällisempiä kuin speksit edellyttäisi. Kuitenkin ne pari nörttiä jotka itkee aiheesta on pientä verrattuna niihin miljoonaan käyttäjään jotka itkee selaimesta kun vika on sivussa.
Jos tämä oli suunnattu minulle, kehottaisin lukemaan viestini uudestaan. Olet saanut "väittelyn" aikaiseksi lukutaidottomuuttasi. Lue ajatuksella uudestaan ennenkö jatkat vittuilua: https://www.ohjelmointiputka.net/keskustelu/
Varmaan 90% maailman nettisivuista ei toimisi, jos selaimet ei yhtään paikkaisi virheitä. On se ihan kiva, että paikkaavat.
LaNu kirjoitti:
On se ihan kiva, että paikkaavat.
No jaa... Ehkä ois parempi, jos eivät paikkais, niin ihmiset joutuis korjaamaan rikkinäiset sivunsa ja kaikilla ois kivempaa.
Siis en tiedä mitä käytän, vaikka tiedostopääte on .xhtml. Siinä kuvakkeessa on kuitenkin "Chrome HTML Document".
ErroR++ kirjoitti:
<form action="varmistus.php" method="post"> <b>Tunnus:</b><input type="text" name="tunnus" value="Tunnus"> <b>Salasana</b><input type="password" name="salasana" value="salasana"> <input type="submit" name="kirjaudu" value="Kirjaudu"> </form>
Siis anteeks, toi toimii. Heti kun ite kokeilee!
Mutta php ei toimi koska en käytä mitään palvelinta. Ylempänä lukee miten ne sivut teen.
LaNu kirjoitti:
Jos tämä oli suunnattu minulle, kehottaisin lukemaan viestini uudestaan.
Ei ollut. Viesti oli vastaus Tukille. Ja ryhmät joihin viittasin viestissäni kuvasi maailmanlaajuista nettikäyttäjäpopulaatiota ja sen alaryhmitä yleisesti. Korostan vielä että en lue sinua tuohon "muutama nörtti" ryhmään. Pahoitteluni jos luulit sen piikittelyksi.
LaNu kirjoitti:
Olet saanut "väittelyn" aikaiseksi lukutaidottomuuttasi. Lue ajatuksella uudestaan ennenkö jatkat vittuilua:
https://www.ohjelmointiputka.net/keskustelu/22573-ihme-encoding-error/sivu-1#v181194
En mielestäni ole vittuillut kenellekään eikä tuossa viestissä ollut edes väittelyä vaan yleistä asioiden toteamista. Olen lukenut viestisi ja minusta omassa viestissäni olen lähinnä samaa mieltä sen kanssa.
Muilta osin epäilyt lukutaidottamuudesta ja muun henkilöön menevän kommentoinnin jätän omaan arvoonsa.
LaNu kirjoitti:
Grez kirjoitti:
Eli oma tulkintasiko on, että kaikki selaimet toimii väärin kun antavat käyttäjän valita jonkin muun kuin palvelimen kertoman merkistön?
Kyllä, näin. W3C:n speksi sanoo yksikäsitteisesti, mitä merkistöä selaimen pitää käyttää. Muu on luonnollisesti speksin vastaista toimintaa. Eihän siitä mitään haittaa ole kenellekään, että monet selaimet tarjoaa mahdollisuuden kokeilla löytää oikea merkistö rikkinäisellä sivulla. Sillä nyt vaan ei ole speksin kanssa mitään tekemistä.
Miksi sillä pitäisikään olla? W3C:n standardit eivät pakota käyttäjää tekemään tietyllä tavoin. Speksien ja standardien ainoa tarkoitus on yrittää taata universaalisti toimiva internet. Jokainen käyttäjä on vapaa tekemään muutoksia omaan henkilökohtaiseen kokemukseensa siitä.
Jotenkin niin päätöntä kiistellä siitä, miten väärin tehtyjen sivujen kanssa pitäisi menetellä, kun on kylmä fakta, että sellaisten kanssa tulee joka tapauksessa ongelmia.
Grez kirjoitti:
Mutta mitä tulee tuohon että nörtit vs muut, niin kyllähän asioista tietämättömätkin saattaa koodailla xhtml:ää. Varsinkin kun se oli jossain vaiheessa "viimeisin" versio, ja varsinkin asioita tuntemattomat herkästi tykkää käyttää "uusinta versiota", vaikka vanhempi sopisi tarpeeseen paremmin.
Se että nettisivuilla sulkee tagit ja laittaa alkuun xhtml-doctypen (yms. seikat) ei tee sivusta vielä tosiasiallisesti xml:ää siinä mielessä kun se oleellisesti eroaa html:stä. Aika harva harrastelija tarjoilee xhtml:nä tekemiään sivuja application/xhtml+xml -mime-tyypillä, mikä vasta saisi selaimet käsittelemään ne eri tavalla kuin html-sivut. Varmaan suurimpina syinä tähän on että tuo usein vaatii palvelinpään konfigurointia tai ohjelmointia, se saa selaimet virheherkempään tilaan (mm firefox ei näytä virhetilanteessa sivusta mitään) ja ehkä oleellisimpana syynä tavallisilla nettisivuilla siitä ei yleensä ole mitään hyötyä.
Kun sanoin että xml on niiden parin nörtin kieli, tarkoitin xml:ää nimenomaan siinä mielessä kun se oleellisesti eroaa html:stä. Xhtml:n tapauksessa tämä edellyttää erityisesti sivun käsittelelmistä application/xhtml+xml:nä (tai muuna sopivana xml-tyyppinä).
Tukki kirjoitti:
Se että nettisivuilla sulkee tagit ja laittaa alkuun xhtml-doctypen (yms. seikat) ei tee sivusta vielä tosiasiallisesti xml:ää siinä mielessä kun se oleellisesti eroaa html:stä ...
Laitahan niille harvoille harrastelijoille kuten W3C tai W3Schools postia, että käyttäisivät mielummin esim. HTML 4.01, koska sivut eivät oleellisesti eroa html:stä.
Othnos kirjoitti:
Laitahan niille harvoille harrastelijoille kuten W3C tai W3Schools postia, että käyttäisivät mielummin esim. HTML 4.01, koska sivut eivät oleellisesti eroa html:stä.
Voi elämä, miksi ihmeessä laittaisin noille postia? Mikähän edelläkirjoittamani viittaa siihen että noissa sivuissa olisi mielestäni jotain vikaa? Sitäpaitsi ne molemmat tarjoillaan text/html- mime-tyypillä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.