Hey,
Ik haal verschillende teksten uit een database, alleen... Hij laat soms vraagtekens zien.. Nu vraag ik me eigen af, hoe kan ik die vraag tekens weghalen? Dus dat er wel de tekens komen die er moeten staan?
http://www.colina-events.nl/nieuws/8
Dit is de pagina waar zo'n vraagtekens staan
P.S. Het zijn altijd van die quotes die vervangen worden door vraagtekens..
- rare tekens php/html weghalen
-
14-01-2010, 20:44 #1
- Berichten
- 394
- Lid sinds
- 15 Jaar
rare tekens php/html weghalen
-
-
14-01-2010, 20:46 #2
- Berichten
- 330
- Lid sinds
- 18 Jaar
Vaak ligt dit aan een verkeerde content-charset / encoding. Wat je moet veranderen is zo moeilijk te zeggen aangezien ik niet weet welke MySQL karakterset je gebruikt (is te vinden in phpmyadmin) en hoe de tekst in de database staat (wordt het daar wel correct getoond?).
Probeer dit eens bovenaan de php pagina te zetten:
header("Content-Type: text/html; charset=utf-8");
Het is vaak een beetje puzzelen wat de goede instellingen zijn, dus wat uitproberen loont.
-
14-01-2010, 20:52 #3
- Berichten
- 1.483
- Lid sinds
- 16 Jaar
@ Arjen
Puzzelen? Puzzelen is niet nodig als je gewoon de methode aanhoudt die je vooraf bepaald. Kies je vooraf voor UTF-8 dan pas je dit inderdaad overal toe.
TS dient direct na de connectie met de database de volgende query te draaien:
PHP Code:<?php
$charset = "SET NAMES 'UTF8'";
mysql_query($charset) or die(mysql_error());
?>
Alles wat je goed moet zetten:
1) HTML meta tag op UTF 8 zetten.
2) In de CSS de charset op UTF 8 zetten.
3) In PHP een UTF-8 header meegeven om de output van een file op UTF 8 te zetten.
4) De verbinding met de database op UTF-8 zetten door SET NAMES te draaien (zie hierboven)
5) Database tabellen op UTF-8 zetten, dit kan het beste gedaan worden door de tabel te exporteren de charset naar utf8 te typen en opnieuw te importeren.
Dan pas heb je een valide charset.Laatst aangepast door Arek van Schaijk : 14-01-2010 om 21:10
-
14-01-2010, 20:54 #4
- Berichten
- 330
- Lid sinds
- 18 Jaar
Als je inderdaad overal de goede methode aanhoudt is het geen kwestie van puzzelen, echter lijkt mij dan ook een extra mysql query overbodig (maar in dit geval wel de goede oplossing denk ik). Maar zeker als je gebruik maakt van feeds (met verschillende charsets) is het soms lastig om alles correct weer te geven.
-
14-01-2010, 20:55 #5
- Berichten
- 394
- Lid sinds
- 15 Jaar
“Rombo” zo staan die quotes in de database.. En die charset staat ook goed
Vaak ligt dit aan een verkeerde content-charset / encoding. Wat je moet veranderen is zo moeilijk te zeggen aangezien ik niet weet welke MySQL karakterset je gebruikt (is te vinden in phpmyadmin) en hoe de tekst in de database staat (wordt het daar wel correct getoond?).
Probeer dit eens bovenaan de php pagina te zetten:
header("Content-Type: text/html; charset=utf-8");
Het is vaak een beetje puzzelen wat de goede instellingen zijn, dus wat uitproberen loont.
-
14-01-2010, 20:55 #6
- Berichten
- 1.483
- Lid sinds
- 16 Jaar
De extra query is niet overbodig maar noodzakelijk. Een persoon met een hosting pakketje kan niet PhpMyAdmin zo configureren dat de verbinding altijd op UTF 8 staat. Je begrijpt me niet? De SET NAMES is de 'Enigste' oplossing op dit moment. Dit probleem valt niet op een andere manier op te lossen.
-
14-01-2010, 21:01 #7
- Berichten
- 221
- Lid sinds
- 16 Jaar
Dan moet je even met de MySQL karaktersets wat dingen uitproberen, heb ik ook wel eens gehad.
edit: Die oplossing werd al gegeven, werkte deze of niet?
-
14-01-2010, 22:15 #8
- Berichten
- 297
- Lid sinds
- 15 Jaar
@ Arjen
Puzzelen? Puzzelen is niet nodig als je gewoon de methode aanhoudt die je vooraf bepaald. Kies je vooraf voor UTF-8 dan pas je dit inderdaad overal toe.
TS dient direct na de connectie met de database de volgende query te draaien:
PHP Code:<?php
$charset = "SET NAMES 'UTF8'";
mysql_query($charset) or die(mysql_error());
?>
Alles wat je goed moet zetten:
1) HTML meta tag op UTF 8 zetten.
2) In de CSS de charset op UTF 8 zetten.
3) In PHP een UTF-8 header meegeven om de output van een file op UTF 8 te zetten.
4) De verbinding met de database op UTF-8 zetten door SET NAMES te draaien (zie hierboven)
5) Database tabellen op UTF-8 zetten, dit kan het beste gedaan worden door de tabel te exporteren de charset naar utf8 te typen en opnieuw te importeren.
Dan pas heb je een valide charset.
-
15-01-2010, 07:25 #9
- Berichten
- 394
- Lid sinds
- 15 Jaar
Het is voor een deel verholpen, maar niet alle tekentjes zijn weg. Nu zijn het de die vervangen worden door vraagtekentjes..
-
15-01-2010, 08:48 #10
- Berichten
- 257
- Lid sinds
- 15 Jaar
Laat maar, verkeerd gezien.
-
15-01-2010, 08:53 #11
- Berichten
- 95
- Lid sinds
- 18 Jaar
PHP Code:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-
15-01-2010, 11:19 #12
- Berichten
- 750
- Lid sinds
- 15 Jaar
Let op dat wanneer je de function html-entity-decode ( bron: http://php.net/manual/en/function.ht...ity-decode.php ) gebruikt om je non breaking spaces om te zetten de function default ISO 8859-1 gebruikt
Als extra toevoeging op Arek de SET names query lijkt niet altijd goed te gaan ik heb dit probleem ook gehad. Deze http://php.net/manual/en/function.mysql-set-charset.php lijkt bij mij beter te doen
-
15-01-2010, 11:42 #13
- Berichten
- 1.483
- Lid sinds
- 16 Jaar
Aanvullend bericht:
Waarschijnlijk is de inhoud van je database of bepaalde inhoud (die de vraagtekens veroorzaken) opgeslagen met een verkeerde charset. Wat heel belangrijk is is dat je bevoorbeeld de SET NAMES ook moet draaien op je controlepaneel bijvoorbeeld. Gegevens die je vanuit je controlepaneel opslaat naar de database moeten ook als UTF8 doorgegeven worden zodat ze goed opgeslagen kunnen worden.
Je kunt dit op dit moment het beste oplossen door de variabel die de vraagtekens toont door de functie utf8_encode te halen. Bijvoorbeeld:
PHP Code:<?php
$variabelmetvraagtekens = utf8_encode($variabelmetvraagtekens);
echo $variabelmetvraagtekens;
?>
Ga ook nog even na of de database tabellen overgezet zijn naar utf8.Laatst aangepast door Arek van Schaijk : 15-01-2010 om 11:47 Reden: Automatisch samengevoegd.
-
16-01-2010, 08:53 #14
- Berichten
- 394
- Lid sinds
- 15 Jaar
Omdat ik $charset = "SET NAMES 'UTF8'";
mysql_query($charset) or die(mysql_error());
meteen na mijn connectie heb neergezet zijn de meeste vraagtekens weg. Ik zal straks even proberen om het ook in het beheer te vervangen. En wat jij zegt met utf functie voor de tekst te zetten ;)
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic