[MySQL] Speciale tekens uit database worden vraagtekens

Pagina: 1
Acties:
  • 1.199 views sinds 30-01-2008
  • Reageer

  • Mexxus
  • Registratie: Januari 2004
  • Laatst online: 20-09-2025
Beste mensen,

Ik heb in een MySQL database een heel hoop artikelen staan. Deze artikelen bevatten wel eens speciale tekens als é, è, ë enz. Normaliter gaf dat nooit problemen bij het uitlezen van deze database via php, maar sinds kort worden die tekens op misterieuze wijze veranderd naar vraagtekens.

Bij het uitlezen haal ik ze door stripslashes() en htmlspecialchars(). De artikelen zijn opgestaken als text velden in een MyISAM tabel. Onlangs is er een servercrash geweest, sinds wanneer ik dit probleem ondervind. Echter, als ik via phpMyAdmin mn database check, zijn de speciale tekens nog wel gewoon zoals het hoort ingevuld. Enkel als ik ze uitlees via mijn php script (wat tot voorkort altijd werkte) veranderen ze in vraagtekens.

Enig idee?

  • Onbekend
  • Registratie: Juni 2005
  • Nu online

Onbekend

...

Wat voor charset gebruik je precies?
Het kan zijn dat je iets in je http-header hebt gewijzigd.

Speel ook Balls Connect en Repeat


Verwijderd

Verkeerde character encoding. Het makkelijkst is gewoon om alle bijzondere tekens (hoger dan 127 decimaal) te escapen. Het best is om alle gebruikte encodings in de database, de script engine en de webserver op elkaar af te stemmen.
Bij het uitlezen uit een database de waarden door stripslashes halen is overigens 100% onzin.

  • Mexxus
  • Registratie: Januari 2004
  • Laatst online: 20-09-2025
Lijkt me niet, want ook in de broncode van m'n pagina's staan gewoon vraagtekens in plaats van de speciale tekens.

  • Onbekend
  • Registratie: Juni 2005
  • Nu online

Onbekend

...

Kan je een link naar je site geven, anders kunnen we alleen maar gissen.

Speel ook Balls Connect en Repeat


  • Mexxus
  • Registratie: Januari 2004
  • Laatst online: 20-09-2025
Ook onbekend schreef op zondag 08 oktober 2006 @ 13:48:
Kan je een link naar je site geven, anders kunnen we alleen maar gissen.
Zie m'n sig -> Homepage ;-)

Verwijderd

IPV die tekens moet je dan de HTML nemen zoals je vind hier:
http://www.google.nl/sear...&btnG=Google+zoeken&meta=

Een é schrijf je dan in html als:
code:
1
É
en dan geeft ie em vaak wel goed (mits goeie charset)

//Waarom doet ie de tekens nou weer wel omzetten stom UBB systeem ;p

[ Voor 14% gewijzigd door Verwijderd op 08-10-2006 14:16 ]


  • mouse256
  • Registratie: Mei 2003
  • Laatst online: 28-12-2025
inderdaad charset probleem:
livehttpheaders:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
GET / HTTP/1.1
Host: www.martinvdijk.nl
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: nl-be,nl;q=0.8,en;q=0.5,en-us;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://gathering.tweakers.net/forum/list_messages/1167004

HTTP/1.x 200 OK
Date: Sun, 08 Oct 2006 12:13:43 GMT
Server: Apache/2.2.2 (Fedora)
X-Powered-By: PHP/5.1.4
Set-Cookie: PHPSESSID=et7cba9a417dolr37ac1l3moj1; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Encoding: gzip
Vary: Accept-Encoding
Content-Length: 5613
Connection: close
Content-Type: text/html; charset=UTF-8

Op de laatste regel zie je dus dat die zegt dat de charset UTF-8 is.

In de brondcode van uw html:
code:
1
<meta http-equiv='content-type' content='text/html; charset=iso-8859-1' />

Die dingen komen dus niet overeen, das al geen goed begin. Verder moet je indien je utf8 gebruikt ook zien dat de data die in je database zit als utf-8 wordt opgeslagen, ofwel moet je ze converteren als je ze er uit haal en er in steekt (maar dat een lastige oplossing, in dat geval kan je beter in je headers zeggen dat je iso-8859-1 gebruikt ipv utf-8)

@speedydre: Dat moét niet perse, als je oplet dat je overal utf-8 gebruikt is dat niet nodig, maar uit veiligheidsoverweging is het meestal idd wel een goede keuze.

[ Voor 5% gewijzigd door mouse256 op 08-10-2006 14:18 ]


  • Mexxus
  • Registratie: Januari 2004
  • Laatst online: 20-09-2025
En hoe doe ik dat veranderen in m'n headers? Nogmaals.. ik heb niets veranderd aan m'n scripts of iets dergelijks. Dit probleem doet zich voor na een servercrash bij m'n hosting provider. Daarna is er dus waarschijnlijk iets van een instelling anders gezet ofzo...

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
PHP:
1
header('Content-type: text/html; charset=iso-8859-1');

March of the Eagles


  • Mexxus
  • Registratie: Januari 2004
  • Laatst online: 20-09-2025
Jeuj! Gelukt! Thnx!

  • DemonTPx
  • Registratie: December 2002
  • Laatst online: 05-12-2025
Mijn oplossing voor dit probleem, was het uncommenten van de volgende regel in de php.ini:
code:
1
default_charset = "iso-8859-1"
Pagina: 1