Euro teken van HTML UTF-8 naar MySQL UTF-8

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

JunkieXP

JunkieXP

04/03/2008 11:36:00
Quote Anchor link
Ik heb een gastenboek welke een bericht alvorens het posten stript met htmentities en mysql_real_escape_string.

Alles werkt prima behalve het gebruik van het Euro teken, deze word in de database vermeld als â zelfs wanneer ik hem eerst langs een string replace laat lopen en deze de € laat vervangen door € gaat het fout, ik heb al verschillende dingen geprobeerd maar ik krijg het euro teken gewoon niet werkend.

Heeft iemand enig idee waar het fout gaat of hoe ik dit kan omzeilen.

Zowel de HTML als MySQL staan ingesteld op UTF-8 (Unicode) en heb zelfs nog dubbel utf8_decode over de string gegooid.

Tevens haalt het niks uit als ik alle controle weghaal want ook het direct posten van de string heeft niet het gewenste resultaat.

Wanneer ik via PHPmyAdmin het € teken er direct inzet wordt deze wel correct weggeschreven en uitgelezen door de pagina.
 
PHP hulp

PHP hulp

23/12/2024 01:35:18
 
Bart van der veen

bart van der veen

04/03/2008 11:48:00
Quote Anchor link
<META http-equiv="content-type" content="text/html;charset=iso-8859-1">

moet je nemen volgens mij....
 
JunkieXP

JunkieXP

04/03/2008 11:55:00
Quote Anchor link
<meta http-equiv="content-type" content="text/html; charset=utf-8">

Heb ik daar genomen, gezien ik vaak werk vanuit Putty en Linux zelf UTF-8 is leek me dit de beste keuze gezien het een aantal probleempjes bij directe HTML input toen al voor me weg nam.

Echter loop ik nu dus tegen dit probleem aan
 
- -

- -

04/03/2008 12:04:00
Quote Anchor link
Je zet het in de database met een gewone €, pas als je de data output zet je het om naar euro; door de functie htmlentities. Behalve als je HTML in je database hebt, bijvoorbeeld als je een WYSIWYG-editor (TinyMCE, FCKEditor) gebruikt.
 
JunkieXP

JunkieXP

04/03/2008 12:12:00
Quote Anchor link
Maar toch zowel € wegschrijven als &euro; wegschrijven werkt niet, had het in eerste in stantie gewoon normaal geprobeerd maar toen € niet fatsoenlijk naar de database geschreven werd dacht ik hem te tricken helaas zonder resultaat.

Naja dan zet ik hem er maar als "smiley" in zie geen andere mogelijkheid :).
 
Arjan Schuurman

Arjan Schuurman

04/03/2008 12:17:00
Quote Anchor link
&euro; wordt natuurlijk &amp;euro;

Heb hier zelf eigenlijk nog nooit over nagedacht.
 
Frank -

Frank -

04/03/2008 12:24:00
Quote Anchor link
Het euro-teken kun je toch gewoon als euro-teken (utf-8) invoeren, opslaan en weergeven? Dat is valide html en werkt verder ook prima.

Zie ook dit script (welliswaar PostgreSQL, maar dat maakt hier niet uit) waar de database en de html-pagina's met utf-8 werken en waar een € gewoon zo wordt ingevoerd, opgeslagen en weergegeven. Daar vindt geen enkele conversie plaats, is nergens voor nodig. Zie ook de broncode in het voorbeeld.
 
JunkieXP

JunkieXP

04/03/2008 12:26:00
Quote Anchor link
&euro leest hij wel uit, even een overzichtje.

&euro; posten werkt
€ posten werkt niet

beide werken wanneer ze direct in de database worden gepland met PHPmyAdmin

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php $postMessage = str_replace('€', ':euro:', $_POST['message']);
  $postMessage = htmlentities($postMessage);
  $gbook_sql = mysql_query("INSERT INTO guestbook
                             VALUES ('', '"
.mysql_real_escape_string($postName)."', '".date('Y-m-d H-i-s')."', '".mysql_real_escape_string($postMail)."', '".mysql_real_escape_string(htmlentities($_POST['site']))."', '".mysql_real_escape_string($postMessage)."', '".$_SERVER['REMOTE_ADDR']."')"); ?>


Dat is alles wat er met de $_POST['message']; wordt gedaan en zelfs wanneer ik € omzet naar :euro: voor hij naar de database gaat zet hij nog &Acirc; in de Database en kapt hij ook gelijk het bericht af, na dat euro teken (ofja &arcirc; teken) schrijft hij ook niks meer van dat bericht de database in.

@PostGRE_Frank: in Theorie moet het ook gewoon kunnen maar in de Praktijk gaat er toch echt iets mis. Ik had het ook graag anders gezien maar dat is het dus niet.
Gewijzigd op 01/01/1970 01:00:00 door JunkieXP
 
Frank -

Frank -

04/03/2008 13:01:00
Quote Anchor link
JunkieXP schreef op 04.03.2008 12:26:
in Theorie moet het ook gewoon kunnen maar in de Praktijk gaat er toch echt iets mis.
Er gaat iets mis omdat jij ergens iets fout doet. Zoals je in mijn voorbeeld kunt zien, gebruik ik overal utf8 en doe ik helemaal nergens iets bijzonders met het euro-teken. Gevolg: Het gaat vanzelf goed.

Waarom gaat het goed? Omdat het euro-teken gewoon onderdeel is van utf-8, die hoef je dus niet om te zetten naar een ascii-teken. Wanneer dat wél nodig is, gebruik je blijkbaar niet overal utf8.

Heb jij zowel de database, als de tabel als de kolom in de tabel op utf8 staan? In MySQL kun je namelijk vrij eenvoudig een mix maken van verschillende encodings. Dit kan je dan ook flink in de weg zitten...
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 
JunkieXP

JunkieXP

04/03/2008 13:35:00
Quote Anchor link
Ja dat heb ik inderdaad wel ondervonden

Zowel in de start van PHPmyAdmin heb ik toendertijd de encoding op handmatig utf8_unicode_ci gezet, als in de betreffende database, als in de betreffende tabel (gbook), als in de kolom (message).
 
JunkieXP

JunkieXP

04/03/2008 17:01:00
Quote Anchor link
Ik denk dat ik de boosdoener gevonden heb.

Ik meende me ter herinneren dat je zelfs in zoiets simpels als NotePad(++) de Codering in kon stellen, daar dit nooit een probleem had opgeleverd heb ik hier eigenlijk nooit naar gekeken.

Wanneer ik de € plain in een html of php bestand zette werdt dit een vraagteken en toen dacht ik toch maar is naar die codering te kijken.

Wat blijkt nou, deze stond ingesteld op het Dos/Windows Formaat en de ANSI Codering, ik heb dit nu omgezet naar het Unix formaat en UTF 8 codering.

Iemand enig idee hoe ik dit ineen keer voor al mijn files kan doorvoeren want om nu alles handmatig te openen, wijzigen en vervolgens opnieuw op te slaan is ook een redelijke kromme methode.
 



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.