Toon posts:

mysql rare tekens

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een bekend probleem, maar ik kom er niet uit.

Als ik een é invoer in de database (MySQL 3.23.58) komt daar een é in te staan.
Bekend probleem en normaal geen probleem, want met utf8_decode en utf8_encode kom je een eind. Dit is alleen geen probleem als alle data hetzelfde in de db staat (dus alle é als é, enz.).

Maar nu moet er gebruik gemaakt worden van 2 verschillende invoer mogelijkheden en wordt de content door verschillende soorten media gebruikt. Hierdoor wil ik dat de tekens in de db komen zoals ze zijn (een é moet een é blijven). Bij het uitlezen bepaal ik dan wel wat er mee gebeurt. Wil ik het bv. voor het web gebruiken, dan gebruik ik html_entities (PHP) om het goed weer te geven.

Het rare is, dat als ik teksten via phpMyAdmin (versie 2.5.6) invoer alles goed in de db komt te staan. Maak ik zelf een script, dan komt het er vervormt in te staan :?

Ik gebruik dezelfde meta tags:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
Het is allebei online, dus beide gebruiken dezelfde PHP en MySQL configuraties.
En uiteraard gebruik ik bij de invoer dezelfde browser.

Ik heb zelf ook al dingen geprobeerd als UTF-8 meta tags en encode dingen, maar niks wordt zoals het zijn moet. Ook kan ik in de phpMyAdmin codes kan ik niks vinden wat mogelijk de oorzaak is van het correct opslaan.

Verwijderd

Werkt het als je voor je INSERT-query de volgende eenmalig uitvoert?

PHP:
1
mysql_query( "SET NAMES 'utf8'" );

[ Voor 22% gewijzigd door Verwijderd op 30-05-2007 11:49 ]


Verwijderd

Topicstarter
Het ziet er naar uit dat dit alleen in MySQL 4.1 werkt.
Het staat vermeld in de MySQL 3.23, 4.0, 4.1 Reference Manual, maar er staat ook het volgende:
Improved support for character set handling was added to MySQL in version 4.1.

Als ik de query uitvoer krijg ik een error.

Ik kan wel de huidige character sets bekijken met SHOW VARIABLES LIKE 'character_set%';

Dan krijg ik het volgende resultaat:
character_set
latin1

character_sets
latin1 big5 cp1251 cp1257 croat czech danish dec8 dos estonia euc_kr gb2312 gbk german1 greek hebrew hp8 hungarian koi8_ru koi8_ukr latin2 latin5 swe7 usa7 win1250 win1251 win1251ukr ujis sjis tis620

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Verwijderd schreef op woensdag 30 mei 2007 @ 10:49:
...
Ik gebruik dezelfde headers:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
...
Dit is geen header, dit is een meta-tag. Headers verstuur je via php op deze manier:
PHP:
1
header('Content-Type: text/html; charset=iso-8859-1');

http://nl3.php.net/header

Verwijderd

Topicstarter
Excuses, fout aangepast ;)

Er moet ergens een verschil zitten tussen het phpMyAdmin script en mijn script.

[ Voor 69% gewijzigd door Verwijderd op 30-05-2007 13:04 ]