webForumDet fria alternativet

Korrekt åtgärd för "non SGML character number"

HTML & CSS

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&#65533;&#65533;ll”\</a\> Vad är det som är fel i texten ovan kopplat till felmeddelandet

Läs frågan i sin helhet →
Medlem sedan apr. 20041 597 inlägg
#21

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?

Medlem sedan okt. 2005541 inlägg
#22

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 ";"

Medlem sedan feb. 20016 388 inlägg
#23

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.

Medlem sedan nov. 20051 596 inlägg
#24

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

Medlem sedan apr. 20041 597 inlägg
#25

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?

Medlem sedan okt. 200519 inlägg
#26

lillebror skrev:

...hur gör jag för att åtgärda det...

testa med " isället för "

Medlem sedan apr. 20041 597 inlägg
#27

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.

bild.jpg
Medlem sedan nov. 20051 596 inlägg
#28

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...

Medlem sedan apr. 20041 597 inlägg
#29

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.

Medlem sedan apr. 20041 597 inlägg
#30

Äntligen validerar den! Tack allihopa för hjälpen! :)

Medlem sedan okt. 2005541 inlägg
#31

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? ;)

Medlem sedan apr. 20041 597 inlägg
#32

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?!

Medlem sedan juli 20013 378 inlägg
#33

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 &quote; så att de inte avbryter värdet på fel ställe...

Medlem sedan apr. 20041 597 inlägg
#34

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 "&quote;" osv?

Medlem sedan juli 20013 378 inlägg
#35

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 &quote;...

Medlem sedan apr. 20041 597 inlägg
#36

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?!

Medlem sedan apr. 20041 597 inlägg
#37

Denna sida hittade jag som konverterar vanliga tecken till rätt "html"-tecken.

http://www.foxinternet.co.uk/bloggerkeyboard.html

Det funkar va?

275 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
137 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)