vreemde tekens en charsets in html,php,mysql

Status
Niet open voor verdere reacties.

klaaslievens

Gebruiker
Lid geworden
13 okt 2006
Berichten
57
Ik zit al een tijdje met een probleem waar ik ondanks veel googelen toch niet uit raak...
Ik heb een database met tabellen (verrassend hé), allemaal met collatie utf8_general_ci.
Via php en mysql haal ik gegevens uit een tabel en render een html-pagina, met als header o.a.
HTML:
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
Bovendien heb ik (als test) daarvoor ook nog eens via php geschreven:
PHP:
header('Content-type: text/html; charset=utf-8');
iconv_set_encoding("output_encoding", "utf-8");

Geef ik iets met speciale tekens (éèçàü etc.) in in een formulier, dan zie ik allerlei vreemde tekens in mijn database, maar op het scherm worden ze dan wel weer correct weergegeven.

Sla ik die gegevens op nadat ik ze ge-utf8-encoded heb, dan verschijnen ze correct in mijn database, maar moet ik ze terug utf8-decoderen om ze correct op mijn scherm te krijgen.

Zie ik iets over het hoofd, of is mijn redenering dat als alles in utf-8 staat (zowel de html-pagina als de database itself), alle gegevens dan automatisch correct zouden moeten weergegeven worden, fout?

Hoe pak je zoiets eigenlijk het best aan? Tips? Of soortgelijke ervaringen?

Bedankt voor jullie hulp!
 
Waarschijnlijk staat er een of andere instelling aan op je webserver die automatisch conversies doet tussen utf-8 en html-entities. Dat is iig meestal het probleem... ik zou ze even nalopen voor de zekerheid.
 
Je zou het zo is kunnen proberen:

PHP:
// ini_set heel belangrijk:
ini_set('default_charset','UTF-8');

$dbc = new mysqli('localhost','user','pass','database');

if(!$dbc->set_charset('utf8')){
	echo 'Error: Wrong character set for the database connection.';
	echo '<pre>';
	var_dump($dbc->get_charset());
	echo '</pre>';
	exit;
}

// begin van query:

Advies doe niks html encode maar sla karakters op en geef ze weer zoals ze zijn.
 
Superinteressant, die link! Daarmee zijn al mijn problemen opgelost... :thumb:

Bedankt!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan