Ska jag redan när jag sparar informationen i databasen ersätta dessa tecken med "rätt tecken" eller ska jag ersätta de när jag visar, låt säga artikeln?
Korrekt åtgärd för "non SGML character number"
36 svar · 1 299 visningar · startad av lillebror · sida 2 av 2
Frågan, av lillebror
Hej, Jag har börjat med att försöka validera mina sidor och jag måste säga att det går rätt bra när jag lär mig vad det är validatorn anmärker på kopplat till vad som måste åtgärdas. Nu har jag kommit till "non SGML character number". Den gillar inte vissa tecken. ...i luften efter ett långt ”markuppeh��ll”\</a\> Vad är det som är fel i texten ovan kopplat till felmeddelandet
Läs frågan i sin helhet →lillebror skrev:
Någon gång har jag syndat att öppna filen i exempelvis wordpad. Är det det som ställer till det enligt erat tidigare resonemang? Anledningen att jag gjorde det var för att vid ett tillfälle då jag öppnade samma fil i notepad så var den helt felformaterad. Texten/alla tecken bara löpte efter varandra...väldigt svårt att se vad som var vad då. Då öppnade jag den i WordPad vilket kanske var mindre bra.
Ja, Wordpad är ju en enklare variant av Word, dvs en ordbehandlare modell "WYSIWYG" som man kan kalla det, där man kan styla texten. Notepad skriver bara "rå" text som man inte kan styla på något sätt.
Om Notepad visade all text som en enda lång rad, beror kanske på att du inte har ställt in den till att radbryta (under "Redigera" i menyn)? Prova det.
tanten skrev:
Skulle också skriva att allt som finns som också används som kodtecken som t.ex " eller & eller vad det nu kan vara, får inte användas i text. Då kan det missuppfattas av webläsaren. Alla dessa tecken har en annan kod. Kan vara “ före och ” efter det som ska citeras. Förmodligen enklast om du använder ett annat språk för att hämta informationen och då får du peta in det i den koden.
Bara delvis rätt! :) Jag använder vanliga citattecken (dvs ") och även & på mina webbsidor utan problem. Att använda entities för dessa tecken så som du visar är helt onödigt, åtminstone om man använder rätt teckenkodning för webbsidan. Alla "moderna" (inkluderar väl alla versioner från de senaste 6-7 åren i alla fall) webbläsare kan då tolka tecknen rätt, på samma sätt som dom kan tolka å, ä, och ö i det svenska alfabetet.
Där du inte kan använda "&" är när den förekommer i ett sammanhang där det inte finns något mellanslag mellan detta tecken och tecknen närmast intill. Då tolkas "&" som en del av en entities, som ju alltid inleds med ett "&" och avslutas med ";"
lillebror skrev:
Ska jag redan när jag sparar informationen i databasen ersätta dessa tecken med "rätt tecken" eller ska jag ersätta de när jag visar, låt säga artikeln?
Det är ju en smaksak. ;)
Jag skulle ha ersatt dem med rätt tecken redan i databasen. Det känns liksom bättre.
Mozfan:
Bara delvis rätt! Jag använder vanliga citattecken...
Så får jag då åter igen konstatera att jag ibland svarar för snabbt utan att kontrollera först... :r Detta har ju inget med valideringen hos W3 att göra. Snarare valideringen hos bl.a. WAI... för att göra hemsidan tillgänglig inte bara för webben. :)
Och det är väl också en av de större anledningarna till varför man vill använda xhtml innan xml har fullt stöd... Cyklar jag nu :q
Så jag tycker nog ändå att man ska fortsätta med att undvika både tecken och depracated element. §jr
Detta kodexempel hittade jag på php.net:
function decode_entities($text) {
$text= html_entity_decode($text,ENT_QUOTES,"ISO-8859-1"); #NOTE: UTF-8 does not work!
$text= preg_replace('/&#(\d+);/me',"chr(\\1)",$text); #decimal notation
$text= preg_replace('/&#x([a-f0-9]+);/mei',"chr(0x\\1)",$text); #hex notation
return $text;
}
Dock verkar den inte ersätta de konstiga tecknena med rätt tecken eftersom jag fortfarande har kvar felen när jag validerar index-sidan :OO
Vad göra?
Sedan när man tittar på index-sidan så ser dubbelfnuttarna olika ut om man tittar på rubrikerna i den bifogade bilden. De första rubriken ser normala ut medan de i andra rubriken ser kursiva ut!? Jättekonstigt! De loopas ju ut genom samma kod(funktion). Har även tittat i databasen och där ser dubbelfnuttarna lika ut på båda ställena.
Jag tog ner din sida... la dit lang="sv" (du har fortfarande bara xml:lang="sv")
La dit ett mellanrum på de platser som <br /> inte hade ett mellanslag. La dit & i Gott nytt år. Tog bort cellspacing och cellpadding i table och la till en </div>, hade "" (inga specialtecken) omkring de ord du hade det från början på och sidan validerade...
tanten skrev:
Tog bort cellspacing och cellpadding i table och la till en </div>
Ska jag använda padding i CSS istället för i <table>-elementet?
Jag la dit en </div> efter footern och då försvann den.
Äntligen validerar den! Tack allihopa för hjälpen! :)
lillebror skrev:
Äntligen validerar den! Tack allihopa för hjälpen! :)
Nja, inte riktigt ;) Nu har du två andra "illegala" tecken, som dessutom är helt vanliga och internationella bokstäver: Det är i texten "att bli �varm i kläderna�" där bokstaven "i" i "bli" och "e" i "kläderna" markerats som illegala tecken, alltså tecken som absolut inte ska behöva skrivas med entities. :OO Har du petat där med Wordpad igen? ;)
Jag blir smått tokig på detta :) Nu har jag varit inne i databasen via phpMyAdmin och "raderat" bokstaven och skrivit dit den på nytt på de ställena som du angav. Provade att validera sidan igen men felen är ju fortfarande kvar. Hur kan det va så? Alla de andra bokstäverna är ju helt okej?!
Hmm...
Valideringsfelet på förstasidan kommer sig av de "felaktiga" citattecken som du har med i ingressen på http://www.flygfyren.nu/showarticle.php?articleID=21
Läs källkoden
att bli ”varm i kläderna” och få komma bort
Validatorn markerar alltså felaktigt bokstäver i texten istället för de två "fnuttarna" som är orsaken till problemet ;)
Avlägset relaterat förresten (eftersom citationstecken är inblandade):
På den sidan finns det också exempel på fler saker du bör fixa...
t.ex. bör du omvandla citattecken i alt-attribut för dina bilder
alt="Uppställd för start bana 09, Norrköping. - "S-HI, höger ut, klart starta!""
Cittatecknen i texten bör omvandlas till "e; så att de inte avbryter värdet på fel ställe...
Jag börjar inse att det måste till en sådan funktion eftersom validatorn anmärker på det hela tiden.
Är det så kallade HTML-entiteter jag skall konvertera?
Fick tips på i PHP-forumet om att använda följande funktion:
$str = mb_convert_encoding($str, 'windows-1252', 'iso-8859-1');
Tar den hand om detta och ersätter alla tecken som jag nu får anmärkningar till tecken som följer formen ""e;" osv?
Hmm...
mb_convert_encoding tar parametrarna "Sträng, Tillkodning, Frånkodning, så den där blir nog inte helt rätt som den står (om jag inte är ute och cyklar)...
Vad händer om du testar
$str=htmlentities(mb_convert_encoding($win1252str,"ISO-8859-1","Windows-1252"));
htmlentities omvandlar ju t.ex. " till "e;...
Modifierade ovanstående funktion till:
stripslashes(trim(htmlentities(mb_convert_encoding($_POST['articlesubject'],"ISO-8859-1","Windows-1252"))));
Jag la till striplashes (det ska jag väl göra?) och trim.
Nu får jag en output som ser ut så här när jag lagrat det i databasen:
"Test"
Input var så här:
"Test"
Tolkar detta som att det fungerar att omvanlda dessa lustiga tecken?!
Denna sida hittade jag som konverterar vanliga tecken till rätt "html"-tecken.
http://www.foxinternet.co.uk/bloggerkeyboard.html
Det funkar va?



