UTF-8 en htmlentities in xml en php

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeroen VD

Jeroen VD

16/09/2014 22:51:04
Quote Anchor link
Beste allemaal,

probleempje hier: in semi-user generated content gebruik ik html_entities om die vervolgens te laten zien op de website. werkt prima, ë, ä, é etc worden mooi weergegeven. die user generated content wordt opgeslagen in een XML bestand, en bij het uitlezen doet hij dat prima. tot net, toen gaf hij de foutmelding dat 'oriëntatiedagen' geen juiste utf-8 code is en laat de hele boel crashen. op andere paginas doet hij alles wel prima (ook de ë, wat het probleem blijkt te zijn), maar net deze valt hij over. wanneer ik de functie utf8_encode() gebruikte, doet hij het op deze pagina prima, maar op de andere paginas weer verkeerd.

Herkent iemand dit probleem?

Toevoeging op 16/09/2014 22:52:30:

ik heb op dit moment op deze specifieke pagina utf8_encode() gebruikt, op de andere paginas niet. werkt, maar is natuurlijk niet de manier
 
PHP hulp

PHP hulp

19/03/2024 11:01:28
 
Ivo P

Ivo P

16/09/2014 23:01:41
Quote Anchor link
kijk ook eens naar de karakterset op de pagina's waar de invoer van de users binnenkomt: is daar ook utf8 gedefinieerd?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

16/09/2014 23:03:56
Quote Anchor link
Als je UTF-8 encoding gebruikt heb je in principe functies als html_entities helemaal niet meer nodig.
Voorwaarde is wel dat je de database velden ook allemaal instelt op utf8_unicode_ci Collatie. en dat je je verbinding ook instelt op de juiste characterset:

met mysqli:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
mysqli_set_charset($con, "utf8");


Verder natuurlijk ook in je html 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
9
10
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>

<body>
</body>
</html>
 
Jeroen VD

Jeroen VD

16/09/2014 23:16:24
Quote Anchor link
Ik gebruik geen sql, maar xml. ik vind het zo raar dat in mijn parser het ene xml document moeilijk doet over de speciale karakters, en bij de andere totaal niet (dus de ene utf8_encode() nodig, de andere html_entities())

wanneer een xml file wordt ingeladen door met het simpleXML object wordt alles standaard in utf-8 gezet. en daar gaat het mis
 
Frank Nietbelangrijk

Frank Nietbelangrijk

17/09/2014 00:28:23
Quote Anchor link
Oké uit de XML..

dat probleem had ik ook. Ik heb het opgelost met https://github.com/neitanod/forceutf8 en wel met de fixUTF8 functie.
Gewijzigd op 17/09/2014 00:43:07 door Frank Nietbelangrijk
 
Jeroen VD

Jeroen VD

17/09/2014 20:11:11
Quote Anchor link
oke ik snap er helemaal niks meer van.

ik heb 2 xml bestanden: ze ondergaan beide exact dezelfde code om te parsen. (deze gebruikt overigens bij de output html_entities())

bij bestand 1 moet ik utf8_encode() gebruiken, anders geeft hij foutmeldingen, en met die functie doet ie het perfect

bij bestand 2 moet ik die functie juist niet gebruiken: anders veranderd intuïtie in intuïtie (bijvoorbeeld)

waarom gaat dit fout?
 
Ivo P

Ivo P

18/09/2014 09:16:52
Quote Anchor link
kennelijk is de ene al als unicode opgeslagen, en de ander niet...

Zoek eens dichter bij de bron: wie of wat heeft die bestanden aangemaakt?
 
Jeroen VD

Jeroen VD

18/09/2014 09:47:43
Quote Anchor link
Ik heb dat bestand aangemaakt, en volgens notepad++ staat dat in utf-8. het inladen van karakters als ë, ï etc doet het niet
 



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.