[MYSQL/PHP] character encoding (werkt, maar waarom?)

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • temintyd
  • Registratie: Mei 2006
  • Laatst online: 19-10-2023
huidige setup met mogelijk relevante settings ivm character encoding:

MySql 4.0.12
character set: latin1
character sets: latin1 dec8 dos german1 hp8 koi8_ru latin2 swe7 usa7 cp1251 danish hebrew win1251 estonia hungarian koi8_ukr win1251ukr greek win1250 croat cp1257 latin5

PHP 4.4.2
default_charset: no value

Apache 1.3.37
HTTP_ACCEPT_CHARSET: ISO-8859-1,utf-8;q=0.7,*;q=0.7
mbstring:
Multibyte Support: enabled
Japanese support: enabled
Simplified chinese support: enabled
Traditional chinese support: enabled
Korean support: enabled
Russian support: enabled
Multibyte (japanese) regex support: enabled

phpMyAdmin: 2.9.0.3
Language: English (utf-8)

Over deze zaken heb ik weinig controle, geen upgrades mogelijk dus.
De database staat in latin1 alsook al mijn tables en columns (utf-8 pas beschikbaar sinds Mysql 4.1).

Ik heb al wat over character sets en unicode gelezen maar ik kom er niet uit.

Stel ik heb 2 pagina's
-insert.php om een record toe te voegen
-show.php om een record te tonen

Beide pagina's hebben in de head <meta http-equiv="content-type" value="text/html; charset=utf-8" />

Nu als ik een willekeurig aantal Chinese, Arabische of andere exotische karakters ingeef via een html form en insert via php, worden deze karakters tot mijn verbazing:
1. correct in de database ingevoegd (via phpMyAdmin zien ze er correct uit)
2. in de browser ook correct weergegeven

Alles lijkt dus te werken maar ik begrijp niet waarom. :?
Ik zou verwachten dat ze als ??&4946; ofzo in de database staan. (vermits database latin1 en niet UTF-8)
In mijn php code specifieer ik nergens char sets of gebruik ik ook geen functies ofzo.

Als ik <meta http-equiv="content-type" value="text/html; charset=iso-8859-1" /> in de head zet,
komen ze wel 'fout' in de database te staan, maar worden ze wel correct weergegeven door de browser.

Acties:
  • 0 Henk 'm!

  • PhysicsRules
  • Registratie: Februari 2002
  • Laatst online: 31-03 07:26

PhysicsRules

Dux: Linux voor Eenden

Je phpMyAdmin heeft de juiste codering, dus die laat het goed zien. Wat vind je daar vreemd aan? In je database staan bytes en MySQL gaat die echt niet converteren. De instelling van MySQL heeft alleen wat te maken met de manier waarop queries omgaan met de tekst (sorteren e.d.).