' in databank wordt � als output

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ive  De Beckker

Ive De Beckker

27/01/2015 22:17:46
Quote Anchor link
Ik heb een scriptje gemaakt om bestaande tekst uit een blog systeem op te vragen in een andere pagina.

Alles werkt perfect op 1 vervelend detail na.

De tekst in de SQL databank: Ik werd 's ochtends vroeg wakker.

De output die ik krijg is: Ik werd �s ochtends vroeg wakker.
Ik gebruik volgende code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
$result
= mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
echo "<p align='left'/> <img src='images/".$kleurfile."' width='15px'/></img/>";
// datum wijzigen naar ons gangbaar formaat
$source =  $row['t'];
$date = new DateTime($source);
echo $date->format('d/m/Y');
echo "</p/> <p align='center'/><h2/>" .$row['header']. "</h2/>".$row['body']."</p/>";
}

?>


Ik weet, het is een echte amateur code maar het werkt vlekkeloos met uitzondering van dat enige probleempje.

Het gaat hier om $row['body'] waar de tekst in staat die fout weergegeven wordt.

Het blog systeem van de input kan ik niet zelf wijzigen wegens te ingewikkeld.

Als iemand een idee heeft hoe ik dit kan aanpakken, zou ik dankbaar zijn.

' veranderd dus in � bij output en dat is nogal vervelend.
- Aar -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 27/01/2015 22:24:33 door - Ariën -
 
PHP hulp

PHP hulp

27/11/2024 10:53:00
 
- Ariën  -
Beheerder

- Ariën -

27/01/2015 22:28:32
Quote Anchor link
Zorg ervoor dat je op je site overal UTF-8 encoding aanzet:

- Zorg ervoor dat je al je bestanden URL-8 encoding hebben
- Zorg ervoor dat je UTF-8 metatags gebruikt: <meta charset="UTF-8">
- Zorg er voor dat je UTF-8 headers in PHP gebruikt, vóór je de output plaatst: header('Content-Type: text/html; charset=utf-8');
- Zorg ervoor dat je hele database velden en tabellen gebruikt die UTF-8 ondersteunen, en dat je database ook aan wordt gesproken door PHP om UTF-8 te gebruiken.

Dan kan er helemaal niks meer misgaan, en zal je alle exotische karakters zoals éáóí etc. weer kunnen zien.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

27/01/2015 22:29:09
Quote Anchor link
1. in de <head> van de HTML pagina aangeven dat je met UTF8 werkt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
    </head>
    <body>
    </body>
</html>


2. database collatie op utf8_unicode_ci instellen (Ook alle tekst kolommen)

3. na de functie mysql_connect() de functie mysql_set_charset() aanroepen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
mysql_set_charset('utf8');
?>


DAARBIJ:

mysql_* functies zijn oud en moeten niet meer gebruikt worden. Gebruik bij voorkeur PDO.
 
Ive  De Beckker

Ive De Beckker

27/01/2015 22:31:35
Quote Anchor link
Dank u voor de snelle reacties, ik ga onmiddelijk testen.
 
Thomas van den Heuvel

Thomas van den Heuvel

27/01/2015 22:36:55
Quote Anchor link
Collation maakt toch niet uit? Dat is alleen van invloed op tekstsortering en -vergelijking voor zover ik weet.

Anyhoo, je hebt de hint wss al begrepen: zorg dat overal je character encodingen hetzelfde zijn.

EDIT:
Quote:
Dan kan er helemaal niks meer misgaan, en zal je alle exotische karakters zoals éáóí etc. weer kunnen zien.


Tenzij je geen character encoding had geselecteerd op het moment van wegschrijven. Als je dan nu je connectie criteria repareert komt de fout pas naar boven ;-).
Gewijzigd op 27/01/2015 22:38:32 door Thomas van den Heuvel
 
Ive  De Beckker

Ive De Beckker

27/01/2015 22:39:48
Quote Anchor link
I had al jaren niet meer met php gewerkt en moest nu iets maken.
Het is ondertussen gelukt.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
mysql_set_charset('utf8');
?>

was wat ik miste.

Heel hard bedankt voor de hulp, hiermee is mijn pagina helemaal af.
 
Thomas van den Heuvel

Thomas van den Heuvel

28/01/2015 01:25:57
Quote Anchor link
Weet je dat zeker?

Probeer de volgende tekst eens op te slaan, te wijzigen, en opnieuw op te slaan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
' " \
\' \" \\
\\' \\" \\\
&
&amp;
&amp;amp;
A good day, World!
Schnen Tag, Welt!
Une bonne journe, tout le monde!
??? ???? ??????
?? ?, ??!
M?t ngy t?t lnh, th? gi?i!
?????????


EDIT: never mind - deze site ondersteunt ook geen UTF-8, lijkt het.
Gewijzigd op 28/01/2015 20:30:23 door Thomas van den Heuvel
 
- Ariën  -
Beheerder

- Ariën -

28/01/2015 08:42:17
Quote Anchor link
Ik merk het, ik heb het bij de developers neergelegd.
Thanks.
 
Thomas van den Heuvel

Thomas van den Heuvel

28/01/2015 12:53:07
Quote Anchor link
Hm, vermoeden: de database is wel UTF-8, maar de site is in ISO-8859-1 uitgevoerd en de connectie is daarom latin1.

Dus de data is wel goed opgeslagen als UTF-8, maar kan niet worden weergegeven in ISO-8859-1 (latin1). Deze karakters worden vertaald naar een '?' als ze terug omgezet worden van UTF-8 naar latin1 (omdat je connectie latin1 is).

Blijft de vraag: waarom is de site niet UTF-8 (en de db wss wel)? :)

EDIT: Ik zie nou een charset in de source, weliswaar na de title-tag, maar goed :)
Gewijzigd op 28/01/2015 13:07:04 door Thomas van den Heuvel
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.