Vragen: staat jouw database codering goed ingesteld? En jouw htmlpagina?
Kijk hier even voor een basis. Want de e umlaut kan gewoon gebruikt worden, :http://www.atto.nl/utf8/index.php
ik zou niet gaan voor een letter voor letter omzetting, want dan heb je naast ë ook é en è en zelfs ê. En dat ook voor de o a en u.
Maar dan mis je nog de ñ en ç
en dan blijf je bezig
Daardoor komt er ë in de database te staan in plaats van een e met puntjes.
Als ik het volgende gebruik gaat het wel goed en komt er een e met puntjes in de database:
$content = $_POST['content']
Maar ik wil wel een real_escape_string-achtig iets houden, om te zorgen dat er geen errors kunnen komen als mensen ' en " gebruiken.
Hoe kan ik daarvoor zorgen?
[size=xsmall]Toevoeging op 06/04/2018 12:06:24:[/size]
Ivo P: het moet met php van UTF-8 omgezet worden naar het formaat dat gebruikt wordt in een RTF-bestand (ASCII dacht ik). Weet jij hoe dat heet? Dan zouden de karakters juist omgezet zijn lijkt me.
Even concreet: ik werk met php7.
De ë komt nu goed in de database.
Vervolgens:
Ik wil de ë uit de database kunnen halen en omzetten naar een ë die RTF leest.
Welke code gebruik ik daarvoor? Ik wil niet per letter alles moeten omzetten.
NB: Als ik het rtf-bestand open in bijvoorbeeld dreamwaever en de code uitlees zie ik \'eb staan op de plek van de ë.
Daardoor komt er ë in de database te staan in plaats van een e met puntjes.
Dat lijkt mij niet, nee. De enige redenen die ik kan bedenken dat ë in je database terecht komt zijn:
- iemand heeft letterlijk "ë" ingevuld in plaats van "ë"
- er wordt ergens htmlentities() over $_POST heengehaald, mogelijk in een "sanitize-functie" die veel te veel werk verzet
Dit laatste heet ook wel escape-on-input. Je geeft zelf een mooi voorbeeld waarom dat geen goede aanpak is: op het moment dat je de data in je database in een ander formaat dan HTML moet stoppen moet je al deze HTML-specifieke vertalingen weer ongedaan maken. Daarom is het verstandiger om de data zo rauw/ongewijzigd mogelijk in je database te stoppen. Hier heeft real_escape_string() niets mee te maken, dit zorgt er (maar toch alleen in combinatie met quotes) voor dat ingevoerde DATA niet wordt geïnterpreteerd wordt als SQL, en dat is weer handig als je SQL-injectie wilt voorkomen.