[PHP] Vreemde tekens worden niet goed weergegeven*

Pagina: 1
Acties:
  • 3.708 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Anoniem: 53796

Topicstarter
Voor mijn website www.nieuwsspion.nl, ben ik al enige tijd bezig om bepaalde leestekens bv de umlaut, goed te laten weergeven, in de headlines zoals je nu ziet wordt dit omgezet naar hele rare tekens, heeft iemand enig idee waar ik het zoeken moet ?

voorbeeld ‘PSV verlengt verbintenis De JongÂ'

Alvast bedankt.

[ Voor 9% gewijzigd door Anoniem: 53796 op 09-07-2007 19:51 ]


Acties:
  • 0 Henk 'm!

  • soulrider
  • Registratie: April 2005
  • Laatst online: 27-11-2017
naar de juiste html code zoals
code:
1
&quote; < >  
en dergelijken ...

naar de correcte html-codes van je speciale tekens dus ...

of via hex-codering lukt het soms/meestal ook....

maw: heb je zelf al gezocht naar een lijst hoe je zoiets kunt weergeven ?

("html codes speciale tekens" geeft wrs wel serieus wat hints via google ...)

[ Voor 48% gewijzigd door soulrider op 09-07-2007 19:53 . Reden: code tags bijgezet want ze worden vervangen door hun juiste tekens .... ]


Acties:
  • 0 Henk 'm!

  • Optix
  • Registratie: Maart 2005
  • Laatst online: 01-01 18:57
Omdat je html ook daadwerkelijk die vreemde tekens bevat :)
code:
1
‘PSV verlengt verbintenis De JongÂ'

.


Acties:
  • 0 Henk 'm!

  • JKVA
  • Registratie: Januari 2004
  • Niet online

JKVA

Design-by-buzzword fanatic

Ehm, je bedoelt: http://www.handleidinghtm...arakters/karakters03.html?

edit:

Hmm, beetje te laat. :P

[ Voor 21% gewijzigd door JKVA op 09-07-2007 19:56 ]

Fat Pizza's pizza, they are big and they are cheezy


Acties:
  • 0 Henk 'm!

Anoniem: 53796

Topicstarter
ok, dit begrijp ik, maar de site haalt alles uit RSS, dus ik heb zelf geen invloed op de headlines.

Acties:
  • 0 Henk 'm!

  • Optix
  • Registratie: Maart 2005
  • Laatst online: 01-01 18:57
En het orgineel is wel goed??

.


Acties:
  • 0 Henk 'm!

Anoniem: 53796

Topicstarter
ja, mijn site haalt de nieuwskoppen op, en bij het ene gaat het wel goed en bij de ander niet, maar zoals je ziet is het een vervelend gezicht

Acties:
  • 0 Henk 'm!

  • _Apache_
  • Registratie: Juni 2007
  • Laatst online: 21:46

_Apache_

For life.

Klopt, hier had ik ook last van..

Vooral als je data over verschlilende lagen transporteerd kan je dit krijgen..

De oplossing voor mij was een functie die de tekens controleerde en verving door echte HTML codes..

Zero SR/S 17.3kWh / 2700WP PV / HRSolar zonneboiler


Acties:
  • 0 Henk 'm!

  • soulrider
  • Registratie: April 2005
  • Laatst online: 27-11-2017
Anoniem: 53796 schreef op maandag 09 juli 2007 @ 19:56:
ok, dit begrijp ik, maar de site haalt alles uit RSS, dus ik heb zelf geen invloed op de headlines.
dan moet je een script gaan schrijven dat de speciale tekens terug omzet naar hun respectievelijke code's .... htmlspecialchars() doet het meestal wel in php (of een replace_all ofzo)

en ja kijk eens naar het originele ofdiefeed wel alles doorgeeft - anders die webmaster melden dat ie gen bagger tekens moet gebruiken .... en het best effecontroleerd in alle browser (dus niet enkel IE)

Acties:
  • 0 Henk 'm!

Anoniem: 53796

Topicstarter
dit is het gedeelte waarvan ik uitging dat het goed zou zitten

function omzetten($input) {
$input = eregi_replace("&","&",$input);
$input = eregi_replace(""","\"",$input);
$input = eregi_replace("'","'",$input);
$input = eregi_replace(">",">",$input);
$input = eregi_replace("<","<",$input);
$input = eregi_replace("&#235;","ë",$input);
$input = eregi_replace("&#39;","'",$input);
$input = eregi_replace("’","'",$input);
$output = $input;
return $output;
}

Acties:
  • 0 Henk 'm!

  • ibmos2warp
  • Registratie: Januari 2007
  • Laatst online: 20-11-2023

ibmos2warp

Eval is Evil

Anoniem: 53796 schreef op maandag 09 juli 2007 @ 20:02:
dit is het gedeelte waarvan ik uitging dat het goed zou zitten

function omzetten($input) {
$input = eregi_replace("&","&",$input);
$input = eregi_replace(""","\"",$input);
$input = eregi_replace("'","'",$input);
$input = eregi_replace(">",">",$input);
$input = eregi_replace("<","<",$input);
$input = eregi_replace("&#235;","ë",$input);
$input = eregi_replace("&#39;","'",$input);
$input = eregi_replace("’","'",$input);
$output = $input;
return $output;
}
Dat werkt niet echt natuurlijk. Je kunt beter een al bestaande functie gebruiken zoals htmlentities, of htmlspecialchars, maar die converteerd alleen die die jij nu al zelf doet.
Maar als je naar het orgineel kijkt in de bron dan zie je dat er een accent grave ( ` ) en acute ( ´ ) wordt gebruikt. Die converteer jij dus niet.

Ik weet alles van niks
Vind Excel ongelovelijk irritant.


Acties:
  • 0 Henk 'm!

Anoniem: 177275

Volgens mij heeft het ermee te maken dat de feed in kwestie in utf-8 staat, en jouw site in ISO-8859-1.

Ik heb dat ook eens gehad en het gebruik van een ander script voor het lezen van RSS loste het probleem op.

Acties:
  • 0 Henk 'm!

Anoniem: 53796

Topicstarter
ok, maar kan je ze niet allebei in laten lezen ?
zowel de utf-8 als de ISO-8859-1

[ Voor 26% gewijzigd door Anoniem: 53796 op 09-07-2007 20:46 ]


Acties:
  • 0 Henk 'm!

  • Cadezo
  • Registratie: Februari 2006
  • Niet online
Anoniem: 53796 schreef op maandag 09 juli 2007 @ 20:46:
ok, maar kan je ze niet allebei in laten lezen ?
zowel de utf-8 als de ISO-8859-1
Nee, als de rss-feed in UTF-8 gecodeerd is en je website heeft ISO-8859-1, dan krijg je gegarandeerd die 'rare leestekens'. Dit komt omdat je de feeds dus extern ophaalt, iets wat te vergelijken is met het gebruik van een database. Je heel misschien kunnen werken met karakterreferenties, maar dat is heel veel werk...

Het 'probleem' heeft er mee te maken dat de karakterset die jij gebruikt, ook bekend als Latijn-1, geen speciale leestekens (zoals umlaut, copyright- of euro-teken) ondersteund. Zie ook Webrichtlijnen Overheid Karaktercodering.

Zet de karaktercodering van je website eens om naar UTF-8 en zeer waarschijnlijk is het probleem dan verdwenen.

Is tevens het minste werkt, lijkt mij.

[ Voor 37% gewijzigd door Cadezo op 09-07-2007 20:59 ]


Acties:
  • 0 Henk 'm!

Anoniem: 53796

Topicstarter
Ok, deze is inderdaad het best, de meeste fouten zijn er uit, alleen de PSV verlengt verbintenis De Jong die blijft raar doen.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 01-06 18:50

NMe

Quia Ego Sic Dico.

Ik fix de topictitel even en zet het op de goede plaats. Lees ook Waar hoort mijn topic? even door, daar staat in waarom je hier verkeerd zat. :)

WEB>>PRG

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Cadezo
  • Registratie: Februari 2006
  • Niet online
Anoniem: 53796 schreef op maandag 09 juli 2007 @ 21:01:
Ok, deze is inderdaad het best, de meeste fouten zijn er uit, alleen de PSV verlengt verbintenis De Jong die blijft raar doen.
Komt omdat de feed als karaktercodering ISO-8859-1 (Latijn-1) heeft. Die hokjes zijn trouwens 'haakjes'... Het kan misschien een karakter zijn dat ook niet ondersteund wordt door UTF-8 (lijkt me zeer onwaarschijnlijk) of het karakter wordt niet ondersteund door het gebruikte lettertype...

Is volgens mij verder een probleem waar je verder weinig aan kan doen... Iemand anders misschien, die iets beters weet?

[ Voor 28% gewijzigd door Cadezo op 07-08-2007 21:10 ]


Acties:
  • 0 Henk 'm!

Anoniem: 53796

Topicstarter
Dankjewel, ik denk inderdaad dat er verder niets aan te doen is, maar het is al een heel stuk beter zo.

Acties:
  • 0 Henk 'm!

Anoniem: 177275

Volgens mij is dit wel te fixen (al kan ik je niet 1-2-3 zeggen hoe, sorry). Mij is het gelukt door in mijn php de class van SimplePie te gebruiken. Ik herinner me dat andere readers wel problemen gaven.

Ik weet niet hoe je de feeds leest en weer in je pagina zet, maar met als je php gebruikt, kun je gemakkelijk switchen van utf-8 naar ISO-8859-1.

Wellicht dat er andere Tweakers zijn die concreter kunnen helpen, want dit moet kunnen.

Acties:
  • 0 Henk 'm!

  • Gwaihir
  • Registratie: December 2002
  • Niet online
Concreet zat toch, BARTdG? Of de site moet omgezet worden naar UTF-8, of de feed moet door de door jou aangehaalde utf8_decode functie gehaald worden. :)

Acties:
  • 0 Henk 'm!

Anoniem: 177275

Gwaihir schreef op maandag 09 juli 2007 @ 23:03:
Concreet zat toch, BARTdG? Of de site moet omgezet worden naar UTF-8, of de feed moet door de door jou aangehaalde utf8_decode functie gehaald worden. :)
offtopic:
:Y gimme more gimme more :Y

Acties:
  • 0 Henk 'm!

  • Cadezo
  • Registratie: Februari 2006
  • Niet online
Gwaihir schreef op maandag 09 juli 2007 @ 23:03:
Concreet zat toch, BARTdG? Of de site moet omgezet worden naar UTF-8, of de feed moet door de door jou aangehaalde utf8_decode functie gehaald worden. :)
Lijkt me dat hij juist door de utf8_encode (i.p.v. utf8_decode) gehaald zo moeten worden. Van Latijn-1 naar UTF-8, aangezien de website ook in UTF-8 gecodeerd is...

Acties:
  • 0 Henk 'm!

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
het lijkt me toch juist dat je de rss-data door utf8_decode moet halen... zo gebruik ik het altijd zonder problemen...
PHP:
1
$strResult = utf8_decode($strResult);

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
cdezoete schreef op dinsdag 10 juli 2007 @ 11:57:
Lijkt me dat hij juist door de utf8_encode (i.p.v. utf8_decode)...
Edwardvb schreef op dinsdag 10 juli 2007 @ 12:27:
het lijkt me toch juist dat je de rss-data door utf8_decode moet halen... zo gebruik ik het altijd zonder problemen...
Het probleem is niet het noemen van de exacte functie die hier gebruikt moet worden, het probleem is de onwetenheid mbt character encoding. Om een of andere duistere reden moet er zodra het over character encodings gaat van alles gegokt worden ("zet eens een headertje", "doe een decode/encode", "html entities is de oplossing voor al je problemen!!!111", "probeer eens latin-1337 ipv UTF-42" etc etc), terwijl je gewoon hoort te weten wat de encoding van elke string in je applicatie is. Als je dat begrijpt mag het vinden van de goede functie het probleem niet meer vormen. :)

Een aantal mensen (niet per se degenen die ik quote) in dit topic zou er imo goed aan doen om zich wat in te lezen over dit onderwerp. :> Een pagina als The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) behandelt dit onderwerp op een vrij luchtige manier.

{signature}


Acties:
  • 0 Henk 'm!

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
Voutloos schreef op dinsdag 10 juli 2007 @ 13:14:
[...]

[...]


Het probleem is niet het noemen van de exacte functie die hier gebruikt moet worden, het probleem is de onwetenheid mbt character encoding. Om een of andere duistere reden moet er zodra het over character encodings gaat van alles gegokt worden ("zet eens een headertje", "doe een decode/encode", "html entities is de oplossing voor al je problemen!!!111", "probeer eens latin-1337 ipv UTF-42" etc etc), terwijl je gewoon hoort te weten wat de encoding van elke string in je applicatie is. Als je dat begrijpt mag het vinden van de goede functie het probleem niet meer vormen. :)
helemaal mee eens...
Pagina: 1