hallo, ik wil een record wegschrijven met een zinnetje weer
bv. "het is vandaag 10° en mooi weer"
indien ik dit bijwerkt of wegschrijft in de MYSQL database krijg ik het volgende te zien
"het is vandaag 10"
Alles achter de 10 wordt niet weggeschreven
wat kan daar de oorzaak van zijn?
Welke character encoding gebruik je:
- in het HTML-document waarin je dit weergeeft?
- bij het maken van de database-connectie? (m.b.v. set_charset)
- verder is het handig, maar niet per se noodzakelijk, dat al deze character encoderingen min of meer gelijk zijn (dus bijvoorbeeld UTF-8 in het document, en "utf8" bij het maken van een database-connectie)
Of mogelijk heeft de kolom in de database-tabel te weinig plek voor deze tekst.
Hoe luidt de definitie van de databasetabel/-kolom?
Of misschien gebruik je een afwijkende character encoding bij het weergeven/escapen van deze output? Maar dan zou ik eigenlijk verwachten dat je geen output te zien krijgt.
Het blijft inderdaad koffiedik kijken zonder enige relevante code.
Ja, dan wel. Maar het probleem is nu dat alles na het gradenteken niet wordt opgeslagen, en daarmee heeft escaping niks van doen.
Als die $sleutel bijvoorbeeld het resultaat is van $x * $y (dus altijd numeriek), en het veld `weer` is ook een numeric veld, dan heeft escaping ook totaal geen toegevoegde waarde.
Maar dat is hier al 100k keer voorbij gekomen, dus leek me niet nodig om hier nogmaals te herkauwen, omdat het (vermoedelijk - vooruit dan, hou ik toch een slag om de arm) niks mee te maken heeft.
Als het letterlijk een tekststring is in het PHP-bestand zelf, dan ligt het waarschijnlijk aan de manier waarop het bestand is opgeslagen. Als dit niet met een UTF-8 encodering gebeurt dan gaat dat graden-teken waarschijnlijk door de vleesmolen omdat je met set_charset() (tevens) aangeeft dat alle data die je aan de database aanlevert ook UTF-8 is (of zou moeten zijn). PHP is verder redelijk "doof" voor character encoderingen, deze is enkel geïnteresseerd in bytes.
Escapen (in combinatie met quotes) is altijd een goed idee, maar dat is naar alle waarschijnlijkheid niet het probleem hier.
Dus, mogelijke oplossing: sla het PHP-bestand op met UTF-8 encodering. De meeste editors (en volgens mij kon Notepad dit zelfs) bieden deze mogelijkheid wel, en kun je zelfs per bestandstype vastleggen wat de encodering standaard zou moeten zijn, zodat je dit ook nooit meer fout doet :).