Character encoding

Status
Niet open voor verdere reacties.

ITGuy1990

Gebruiker
Lid geworden
3 nov 2013
Berichten
54
Hallo Forumgebruikers,

Vroeg of laat krijgt iedereen er wel eens mee te maken als hij programmeert. Character encoding. Ik heb het probleem dat wanneer ik bijvoorbeeld tekst in een tinymce editor of iets dergelijks gooi dat deze in een mysql database verkeerd opgeslagen word. Een e apostrof of een o met van die puntjes erop word dan bijvoorbeeld een raar teken. Ik begrijp dit hele gedoe niet helemaal. Maar ik begrijp dat de encoding UTF-8 veel gebruikt is en dat ik alle data in die encoding moet houden. Om zo die rare tekens te voorkomen. Of begrijp ik dat verkeerd?. Wat ik wil:

Data van onbekende bronnen in UTF-8 zetten.
Data van mysql controleren en eventueel omzetten naar UTF-8.
Data naar mysql controleren en eventueel omzetten naar UTF-8

Mogelijk nog andere tips?

Bedankt alvast!

ITGuy1990
 
Moeten is een groot woord. Een aantal dingen:

Je tables moeten ook ingesteld worden op UTF-8. UTF-8 werkt voornamelijk met "westerse" tekens. Indien je veel andere tekens moet onderhouden kun je beter gebruik maken van UTF-16 (als puur de grootte van de opslag van belang is).

Het grote voordeel van UTF-8 is dat als je eenmaal alles in dat formaat hebt het "altijd" werkt.
 
Laatst bewerkt:
Ok. Zitten speciale tekens zoals franse speciale tekens in UTF-8? Want volgens mij worden bepaalde franse tekens ook als "tekeningen weergeven". Of, is er eigenlijk een tekenset met alle tekens? Dat we het probleem gewoon in een keer helemaal kunnen omzeilen?
 
Alle bestaande tekens zitten in UTF-8 (iets van 2,5 miljoen). Dat is natuurlijk geen garantie dat de "font" waarmee je uiteindelijk de data weergeeft ook alle 2,5 miljoen tekens kan weergeven, maar de encoding an sich kan alle tekens opslaan.
 
Ok, begrepen. Nou, even wat meer achtergrond informatie dan:
- Ik heb een reeks webscripts die van externe bronnen in het buitenland de data ontvangen in json formaat.
- Deze word opgeslagen in een MySQL database met als storage engine innoDB.
- Alle tabellen in de database hebben als collatie utf8_general_ci.

Soms komt de data in de database goed aan en soms ook niet. Dan zien we die rare tekens weer verschijnen.
Als de data in de database fout is, dan is dit soms te fixen door een header mee te sturen die utf-8 forceert: header('Content-Type: text/html; charset=utf-8');
Maar dus niet altijd.
En soms als de data in de database wel goed staat kom deze niet goed aan in het resulterende html document. Dan zien we ook weer die rare tekens.

Enig idee hoe dat geheel dan in elkaar zou kunnen zitten?

ITGuy1990
 
Laatst bewerkt:
Hoe "zie" je dat de data verkeerd staat in de database?

De database connectie "weet" dat je UTF-8 wil ontvangen. Dus als er iets verkeerd gaat tussen de client en de server is er ergens een mismatch.

zie ook http://php.net/manual/en/mysqlinfo.concepts.charset.php om je verbinding "hard" op utf-8 in te stellen. Individuele kolommen hebben ook een eigen charset, let daar dus wel op (neem aan dat je dat bedoeld met "alles" staat op utf-8)

Indien je alles op utf-8 wil zetten moet je eigenlijk altijd de utf-8 header meesturen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan