Ik heb een site die informatie uit een database haalt, de data komt soms op een of andere manier fout in het database. Voorbeeld:

Ik voeg "Ingediënten" toe in het database, na een paar weken (mischien met tussentijds wijzigen) staat er opeens "Ingrediënten" in het DataBase. Dit is erg raar voor de bezoekers omdat die hele rare combinaties zien.

Het gebeurt willekeurig, bij het invoegen in het database staat het goed, als ik het daarna wijzig is het ook nog goed waneer/waarom hij het veranderd weet ik niet. Het toevoegen/wijzigen van de data gebeurt via een simpel HTML form (en de $_POST methode), het enige wat word gedaan is de addslases() code (en bij het weergeven bij de gebruiker natuurlijk de stripslashes() code).

Het database is standaard "latin1_swedish_ci", php versie is 4.3.10-16. Ik zit op een "Vserver" hosting en heb geen ervaring met het updaten van software op dat soort hostings.

Waar ligt de fout? Is de PHP versie fout of moet ik nog een ander PHP commando bij het wegschijven doen?

Hopelijk heb ik genoeg informatie gegeven ;)
arjan ja dat is zeker op te lossen met meta's maar wat was jouw bedoeling dan
Re: Rare tekens... op 11.09.2007 11:44
Je moet je encoding goed zetten..
Het database is standaard "latin1_swedish_ci"
Dan zul je bij het aanmaken van de tabellen dus een andere waarde moeten selecteren.
klopt, zo heb ik het ook

ik heb nu:
<? //kleur
<meta http-equiv="Content-Type" content="text/html; charset=latin-1">
?>
Tip: Gebruik utf-8.

latin-1 (dus iso-8859-1) leveren problemen op, deze karakterset is namelijk niet compleet. De € (euro) levert ook vaak problemen op. utf-8 is uiterst compleet en ook bruikbaar voor niet-westerse talen en bijzondere browser-instellingen.
ISO-8859-15 bevat het euro teken.

Umm ik zie dat je html_entity_decode gebruikt, maar als je de documentatie na leest zie je dat je een charset kan meegeven.

Description
string html_entity_decode ( string $string [, int $quote_style [, string $charset]] )

http://nl3.php.net/html_entity_decode
Dus theoretisch als ik de Header goed maak met "charset=utf-8" en de "htmlentities" en "html_entity_decode" weg haal moet het opgelost zijn?
Klopt. Wanneer jij 1 charset gebruikt voor zowel de html-pagina's (zie de header) en de database, dan is het probleem opgelost.

html-functies gebruik je wanneer je gegevens naar de browser stuurt en daar correct wilt tonen. Maar dat heeft niets met opslag in de database te maken, het maakt niet uit waar deze data vandaan komt. Sterker nog, het is dat html dit soort dingen eist en dat PHP een handige functie heeft om jou het werk uit handen te nemen. Wanneer je platte html-bestanden aanmaakt, mag je dit zelf met het handje gaan doen...

Reageren