Versio

[opgelost] Rare tekens

Overzicht Reageren

PHP Jasper

PHP Jasper

07/01/2012 11:33:59
Quote Anchor link
Hoi,

ik heb alles op utf8 gezet en nog krijg ik rare tekens uit mijn db.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
header("Content-Type:text/html;charset=utf-8");


en in de db staat alles op utf8_unicode_ci

ik haal mijn gegevens zo op:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
htmlspecialchars($result_klant['klantid'])
?>


maar toch worden letters als "ç" niet goed weergeven.

opgelost: htmlentities()
Gewijzigd op 07/01/2012 13:16:18 door PHP Jasper
 
PHP hulp

PHP hulp

25/05/2012 13:14:16
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Niels Kieviet
Beheerder

Niels Kieviet

07/01/2012 11:49:12
Quote Anchor link
Nog een tip. Gebruik de functies als volgt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
    htmlspecialchars($value, 'ENT_QUOTES', 'UTF-8');
    htmlentities($value, 'ENT_QUOTES', 'UTF-8');
?>


Zie ook de beschrijving op PHP.net
Gewijzigd op 07/01/2012 11:49:37 door Niels Kieviet
 
PHP Jasper

PHP Jasper

07/01/2012 12:08:40
Quote Anchor link
Niels, maar nu klopt het toch hé? Gegevens uit db => htmlentities erover?
Gewijzigd op 07/01/2012 12:32:37 door PHP Jasper
 
Niels Kieviet
Beheerder

Niels Kieviet

07/01/2012 12:19:16
Quote Anchor link
htmlspecialchars converteert speciale chars naar HTML entities. Een paar voorbeelden:

& => &amp;
" => &quot; (Wanneer je niet gebruik maakt van ENT_QUOTES)
' => &#039; (Alleen wanneer je ebruik maakt van ENT_QUOTES)
< => &lt;
> => &gt;

Als je alle chars wilt converteren naar HTML entities kan je htmlentities gebruiken.
Eigenlijk is de functie dus min of gelijk aan htmlspecialchars.

Quote:
This function is identical to htmlspecialchars() in all ways, except with htmlentities(), all characters which have HTML character entity equivalents are translated into these entities.


Op PHP.net staat dan ook het volgende voorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$str
= "A 'quote' is <b>bold</b>";

// Uitkomst: A 'quote' is &lt;b&gt;bold&lt;/b&gt;
echo htmlentities($str);
?>


Wanneer je ENT_QUOTES gebruikt krijg je dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
// Uitkomst: A &#039;quote&#039; is &lt;b&gt;bold&lt;/b&gt;
echo htmlentities($str, ENT_QUOTES);
?>


Kort samengevat: htmlspecialchars converteert alle speciale karakters en htmlentities alle karakters naar HTML entities.

Snap je?
Gewijzigd op 07/01/2012 12:21:41 door Niels Kieviet
 
PHP Jasper

PHP Jasper

07/01/2012 12:32:11
Quote Anchor link
Ja ik snap het. Dus je zou eigenlijk altijd voor htmlentities kunnen gaan..
Gewijzigd op 07/01/2012 12:32:26 door PHP Jasper
 
Pim -

Pim -

07/01/2012 15:25:24
Quote Anchor link
Nee!
Altijd htmlspecialchars. Als je utf-8 gebruikt is het niet nodig om bijvoorbeeld het euro-teken om te zetten naar de html code ervoor. Het zit namelijk al in je charset.
 
Niels Kieviet
Beheerder

Niels Kieviet

07/01/2012 15:26:33
Quote Anchor link
Ah ik had je berichtje niet meer gezien, maar inderdaad wat Pim zegt altijd htmlspecialchars gebruiken.
 
Pim -

Pim -

07/01/2012 16:32:40
Quote Anchor link
En dan dus op de volgende manieren UTF-8 instellen:
In je header
In je mysql tabel
In je mysql verbinding
In je html files
 
PHP Jasper

PHP Jasper

25/01/2012 00:02:51
Quote Anchor link
In de db is mijn collatie utf8_general_ci klopt dat?
Gewijzigd op 25/01/2012 00:08:11 door PHP Jasper
 



Overzicht Reageren