ge�nventariseerd ipv geïnventariseerd

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Intern - Junior PHP ontwikkelaar in fris en jong t

Bedrijfsomschrijving Werk jij graag een in fris, flexibel en jong team? Bij ons ben jij vrij om te bepalen waar jij het liefst werkt en op de vrijdag komen wij gezellig bij elkaar op kantoor. Flexibiliteit en vrijheid zijn bij ons de norm en dat geeft jou de ruimte en energie om het beste uit jezelf te halen! Ons team bestaat uit vijf enthousiaste collega's die jou graag ondersteunen in zowel je persoonlijke als professionele ontwikkeling. Met twee ervaren Senior Developers als mentoren ben jij in goede handen. Wij zien onszelf als een vriendengroep die gezamenlijk werken aan iets moois

Bekijk vacature »

PHP Software Developer

Functie omschrijving Op zoek naar een nieuwe uitdaging binnen PHP? Lees dan snel verder! Wij zoeken een ervaren PHP developer die binnen een organisatie gaat functioneren als verlengstuk van de klant. Wij zoeken voor deze iemand die technisch complexe zaken met enthousiasme en plezier aanvliegt. Verder moet je instaat zijn om je tijd goed te managen omdat je aan meerdere projecten tegelijkertijd werkt. Je werkt met de nieuwste technieken en tijdens deze uitdaging werk je veel samen met de front-end developers van deze organisatie. Wij zoeken iemand die zichzelf graag uitdaagt en altijd de beste wilt zijn. Bedrijfsprofiel Waar ga

Bekijk vacature »

Software Programmeur PHP - JAVA

Functie Wil jij bij een platte en informele organisatie werken? Lees dan snel verder! Voor een opdrachtgever in omgeving Rotterdam dat zich gespecialiseerd heeft in het realiseren van veilige netwerkverbindingen zijn wij op zoek naar een leuke software developer ter versterking van het huidige team. Hoe kan jouw dag er straks uitzien? Je gaat software en webapplicaties ontwikkelen met behulp van de talen PHP, JAVA en Node.js. Je gaat klanten ondersteunen op het gebied van geleverde software en webapplicaties. Je gaat technische klussen uitvoeren op locatie bij klanten. Je onderhoudt contact met de projectleider om er zeker van te zijn

Bekijk vacature »

Als PHP developer bijdragen aan beter onderwijs?

Functie Momenteel zijn ze op zoek naar een PHP developer die mee gaat werken aan de (door)ontwikkeling van de producten en zo helpt aan de uitvoering van hun ontwikkelprojecten. Je komt te werken binnen hun development team bestaande uit 6 ontwikkelaars. Ze staan zowel open voor meer junior als medior/senior developers. Je kunt snel veel verantwoordelijkheid krijgen en doorgroeien binnen het bedrijf. Bovendien ben je betrokken bij het bepalen van de product roadmap en de inbreng van (nieuwe) technologieën. De applicaties waaraan je werk worden gebruikt op onderwijsinstellingen door heel Nederland. De tech-stack bestaat voornamelijk uit Laravel (PHP), Vue.js en

Bekijk vacature »

PHP Developer

Functie omschrijving Voor een bedrijf in Den Bosch zoek ik een PHP Developer, die al wat werkervaring heeft. Jij gaat aan de slag met de verdere professionalisering van de interne applicaties en software. In de functie ga je verder: Verdere ontwikkeling eigen CRM systeem, vooral middels PHP; Bouwen van verschillende API's & koppelingen; Meedenken om de software/applicaties te verbeteren/optimaliseren; Aan de slag met de interne tooling. Bedrijfsprofiel Dit bedrijf is actief binnen de telecombranche. Het hoofdkantoor zit in regio van Den Bosch en er werken ruim 70 medewerkers, verdeeld over verschillende afdelingen. De afdeling Development bestaat uit vijf collega's, onder

Bekijk vacature »

Ervaren PHP Developer

Functieomschrijving PHP Developer met brede ervaring gezocht! Ben jij een Full Stack PHP Developer met brede ervaring die toe is aan een volgende stap? Lees dan snel verder! Voor onze eindklant in de regio Nunspeet zijn wij op zoek naar een ervaren PHP Developer die het IT Team van deze organisatie gaat versterken. Wij zoeken een enthousiaste en breed georiënteerde IT-er die er voor gaat zorgen dat deze innovatieve organisatie de volgende stap gaat maken. Om deze functie goed uit te kunnen voeren moet je communicatief goed zijn en in staat zijn om zelfstandig problemen op te lossen. Daarnaast bestaat

Bekijk vacature »

Microsoft Acess Developer

Functieomschrijving Wat ga je doen? Heb jij ongeveer 3 jaar ervaring als Software Developer, en komen de volgende kennisgebieden jou niet vreemd voor: MS Acces, C# & SQL? Vind jij het daarnaast leuk om maatwerk software te ontwikkelen voor klanten in een bijzondere branche? Lees dan snel verder! Als developer ben jij samen met een gemotiveerd team van 10 collega’s verantwoordelijk voor het creëren van aangemeten software voor klanten. Je bent klantvriendelijk en oplossingsgericht ingesteld, omdat het essentieel is om de klanten zo goed mogelijk te helpen met hun uitdagingen. Het is mogelijk om vanuit huis je werkzaamheden uit te

Bekijk vacature »

.NET developer

Functie The position we have for you As a .NET developer you will work for one of our customers active in the High Tech Industry. Our customers are mainly located in the Eindhoven area. We are very selective when it comes to the projects we accept and therefore only focus on innovative and complex projects. Because our customers are mainly specialized in machine construction, you often work close to the machines. Our team currently consists of Embedded engineers, IOT developers and Cloud engineers. We mainly work on Microsoft projects where WPF, UWP, .NET Core and Microsoft Azure are used. Eisen

Bekijk vacature »

Digitale Tovenaar Gezocht: Junior Low-code/No-code

Bedrijfsomschrijving Duik mee in een wereld vol innovatieve avonturen waar gegevens en technologie een magische symbiose aangaan! Al meer dan twee decennia lang zijn we de tovenaars achter de schermen die oplossingen creëren voor de meest complexe klantcontactvraagstukken en datagedreven software-uitdagingen. Bij ons draait het om de kracht van samenwerking en groei. We zijn een hechte vriendengroep die samen bergen verzet om elkaar én onze klanten te laten schitteren. Jouw succes is ons succes en we streven ernaar om elkaar naar nieuwe hoogten te tillen, niet voor even, maar voor altijd. We willen dat jij je helemaal thuis voelt in

Bekijk vacature »

Junior Low-code ontwikkelaar gezocht omgeving Arnh

Bedrijfsomschrijving Wij zijn een dynamisch IT-bedrijf dat zich richt op het stroomlijnen van bedrijfsprocessen en het creëren van ondersteunende applicaties. Onze kracht ligt in het combineren van zakelijk inzicht met IT-expertise via gestroomlijnde procesontwerpen en wendbare applicatieontwikkeling met behulp van Low-code technologieën. Als jonge professional krijg je de kans om samen te werken met een team van 15 deskundige collega's, verspreid over nationale en internationale locaties. We bieden je een leerzame omgeving waar je je vaardigheden kunt ontwikkelen en groeien in je rol als Low-code ontwikkelaar. Word jij onze nieuwe Junior Low-code Ontwikkelaar (OutSystems)? Versterk ons team en draag bij

Bekijk vacature »

Applicatieontwikkelaar Java EE

Bedrijfsomschrijving De IV- organisatie van de Belastingdienst is verantwoordelijk voor en verzorgt de ICT- voorzieningen. Het merendeel van de applicaties wordt op dit moment door de IV- organisatie zelf ontwikkeld, onderhouden en beheerd in het eigen data center. Naast de zorg voor continuïteit op de massale heffing- en inningsprocessen die plaatsvinden binnen een degelijke, stabiele omgeving, wordt er tevens volop gewerkt aan modernisering van het IV- landschap. Dit gebeurt deels intern door gebruik te maken van de expertise die intern aanwezig is, maar ook door het aantrekken van (kant-en-klaar) oplossingen en expertise uit de markt. Functieomschrijving De afdeling IV –

Bekijk vacature »

SQL Developer

Functie omschrijving Altijd al willen werken bij een snelgroeiend bedrijf, actief in de logistieke sector? Dit is je kans! Ik ben op zoek naar een ervaren SQL Developer in de omgeving Tilburg. Dit bedrijf is gespecialiseerd in in de ontwikkeling van software en maatwerk oplossingen voor het automatiseren van logistieke processen. Klanten zijn o.a. BOL en andere grote distributiecentrums. Jouw taken worden vooral: Verantwoordelijk voor ontwikkelen van stored procedures, voor snelle afhandeling van data; Optimalisatie van de SQL query's en T-SQL query's; Jij gaat je bezig houden met ontwerpen, ontwikkelen en optimaliseren van de MS SQL Databases; In deze functie

Bekijk vacature »

Als Lead PHP developer bijdragen aan het onderwijs

Functie Als Lead PHP developer zet je samen met het team en de andere lead developers de technische lijnen uit als het gaat om het ontwikkelen van de applicaties en bepaal je samen met de PO waar elke sprint aan gewerkt zal worden. Je kunt op basis van een user story een goede aanpak formuleren en een planning opstellen, en andere hierin meenemen. Wanneer je team code schrijft verwacht je degelijke oplossingen, bij voorkeur gebruik makend van Domain Driven Design. Je ziet toegevoegde waarde in het beoordelen van het werk van collega’s om zo samen te streven naar hoge kwaliteit

Bekijk vacature »

Medior Front-end Developer

Bij Getnoticed doen wij wat we leuk vinden, websites bouwen en online marketing. Voor veel van onze klanten doen we dan ook allebei. Wel zo fijn om campagnes te draaien voor conversiegerichte websites die in eigen beheer zijn. In onze vestiging in Nederweert zit onze development afdeling en worden de websites gebouwd. Op dit moment zijn we op zoek naar jou: dé Medior Front-end Developer die net als wij, het hoofd boven het maaiveld durft uit te steken! In het kort Even een paar punten die omschrijven wat deze toffe baan inhoudt: Het uitwerken van designs tot functionele layouts Je

Bekijk vacature »

.NET developer

Functie Als junior .NET ontwikkelaar ga jij aan de slag in één van de 5 IT teams van dit bedrijf. Jullie werken op basis van interne klantprojecten aan voornamelijk webapplicaties. Dit betekent dat jij continu uitgedaagd wordt en veelal met verschillende soorten projecten bezig bent. Het gave is dan ook dat jullie als team samen bekijken welke technieken het beste passen bij het project waar jullie verantwoordelijk voor zijn. Zo kan het zijn dat jij als .NET developer gaat werken aan een project, maar dat jullie als team liever gebruik maken van Haskell of F# om de klus te klaren.

Bekijk vacature »
Jan te Pas

Jan te Pas

11/10/2018 19:04:16
Quote Anchor link
Ik heb een database overgezet. Draaide op PHP 7 en gaat naar PHP 7. Ik heb de data geimporteerd. In de myPHPmanager zie ik de tekst goed in het veld staan. De codering van het veld is utf8mb4_bin. Nu roep ik de inhoud op in een pagina. En dan krijg ik ge�nventariseerd te zien ipv geïnventariseerd.

De codering in de pagina is utf-8.

Weet iemand hoe ik dit rechtzet, of wat er gebeurd is?
Gewijzigd op 11/10/2018 19:05:17 door Jan te Pas
 
PHP hulp

PHP hulp

26/04/2024 01:19:51
 
- Ariën  -
Beheerder

- Ariën -

11/10/2018 19:07:48
Quote Anchor link
Is de encoding van de bestanden ook op UTF-8 ingesteld, en gebruikt de verbinding naar de database ook het kenmerk dat er UTF-8 wordt gebruikt? Enkel een collatie aanpassen is niet voldoende.
Gewijzigd op 11/10/2018 19:08:24 door - Ariën -
 
Jan te Pas

Jan te Pas

11/10/2018 19:20:47
Quote Anchor link
Hoi Ariën, dank alvast, maar zou ik dat moeten doen? Voordat ik de data wegschrijf? Welke opdracht moet ik DNA meegeven? Svp jouw hulp.
 
- Ariën  -
Beheerder

- Ariën -

11/10/2018 19:23:39
Quote Anchor link
Hoe connect je nu met je database?
 
Jan te Pas

Jan te Pas

11/10/2018 19:28:05
Quote Anchor link
Dit is mijn connectie:

$servername = "localhost";
$username = "xxxxx";
$password = "xxxxxx";
$dbname = "xxxxxxx";
$servername = "localhost";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
 
Thomas van den Heuvel

Thomas van den Heuvel

11/10/2018 19:32:03
Quote Anchor link
Jan te Pas op 11/10/2018 19:04:16:
Weet iemand hoe ik dit rechtzet, of wat er gebeurd is?

Je zult eerst een inventarisatie moeten maken van wat er precies aan de hand is, dit kan een kwestie zijn van het document voorzien van een Content-Type header of meta-tag, maar aan de bovenstaande code te zien selecteerde je bij het maken van een database geen character encoding dus mogelijk is de data in je database "corrupt". Dit komt dan vaak pas naar boven als je een export doet en dan in een nieuwe opzet vervolgens wel op de goede manier een verbinding maakt met je database.

Maar eerst zul je dus de situatie moeten hercreëren om precies na te gaan hoe je data verkeerd geëncodeerd in je database zit om vervolgens een eenmalige omzetting te doen. Maar dat is niet bepaald een sinecure en vereist wel wat kennis van zaken.
 
Jan te Pas

Jan te Pas

11/10/2018 19:35:17
Quote Anchor link
Hoi Thomas,
Ik had de data geïmporteerd. En toen zag ik het. Gelukkig alleen testdata. Ik heb content-type en mega wel goed staan. Ik gooi het een keer leeg en ga nieuwe testdata inoeren. Dank.
 
- Ariën  -
Beheerder

- Ariën -

11/10/2018 19:41:38
Quote Anchor link
Thomas van den Heuvel op 11/10/2018 19:32:03:
....dus mogelijk is de data in je database "corrupt". Dit komt dan vaak pas naar boven als je een export doet en dan in een nieuwe opzet vervolgens wel op de goede manier een verbinding maakt met je database.

Maar eerst zul je dus de situatie moeten hercreëren om precies na te gaan hoe je data verkeerd geëncodeerd in je database zit om vervolgens een eenmalige omzetting te doen. Maar dat is niet bepaald een sinecure en vereist wel wat kennis van zaken.

Dus met een export en import trek je dat weer recht, wil je zeggen?

Ik ga binnenkort een omzetting doen van iso-8859-1 naar UTF-8, maar ik heb geen idee of de data corrupt kan zijn. 40 MB aan data die 12 jaar lang is toegevoegd. Toen hield ik mij net als velen nog niet bezig met encoding.

Heb je misschien tips en trucs? En ja, backups staat heel dikgedrukt op mijn lijstje. ;-)
Gewijzigd op 11/10/2018 19:42:38 door - Ariën -
 
Adoptive Solution

Adoptive Solution

11/10/2018 19:44:09
Quote Anchor link
Ik gebruik dit :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$conn
= new mysqli($servername, $username, $password, $dbname);
$conn->set_charset("utf8mb4");
?>
 
Jan te Pas

Jan te Pas

11/10/2018 19:45:29
Quote Anchor link
Hier leer ik van. Dank.
 
Thomas van den Heuvel

Thomas van den Heuvel

11/10/2018 21:59:03
Quote Anchor link
- Ariën - op 11/10/2018 19:41:38:
Dus met een export en import trek je dat weer recht, wil je zeggen?

Nee.

Hier zijn al meerdere topics over geweest.

EDIT: een ALTER TABLE statement kun/zou je alleen moeten uitvoeren als de DATA ook echt van de voorgeschreven character encoding is, anders kan MySQL dit met geen fatsoen omzetten.

EDIT: het zomaar toevoegen van een set_charset() statement is een heel slecht idee, en wel om de volgende reden. Op dit moment is er mogelijk data verkeerd weggeschreven naar de database. Dit is -nadat je bent nagegaan wat het euvel precies is- waarschijnlijk toch redelijk eenvoudig te herstellen met een eenmalige (handmatige) conversie. Maar wat gebeurt er nu als je een set_charset() statement toevoegt en vervolgens vrolijk verdergaat met het vullen van data? De kans bestaat dan dat je dadelijk een mix van data met kloppende en niet-kloppende character encoderigen hebt, wat het praktisch onmogelijk (of in ieder geval een stuk moeilijker) maakt om alles in één keer recht te trekken.

Nogmaals, het is éérst zaak dat je uitzoekt wat er aan de hand is, en hoe je dat oplost, voordat je allerlei toverformules in je code zet waarvan je de impact niet kunt overzien...

EDIT: het belangrijkste is eigenlijk (nog steeds) het expliciet instellen van een character encoding bij het maken van een verbinding. Dit vormt in wezen een tweezijdig contract met jouw database. Enerzijds dien jij er zorg voor te dragen dat jij DATA aanlevert in die character encoding en anderzijds doet MySQL haar best om DATA in die character encoding vanuit de database terug te geven. Hierbij mag de character encoding die je wilt gebruiken en de character encoding waarmee de DATA is opgeslagen best van elkaar afwijken (al is dit niet aan te raden, MySQL zal de omzettingen onder water weliswaar prima kunnen verzorgen, maar dit is in principe overhead). Wat je hiervan moet onthouden is: de character encoding die je instelt bij/na het maken van een verbinding is de character encoding waarin je vervolgens communiceert/dient te communiceren met je database.
Gewijzigd op 13/10/2018 14:23:44 door Thomas van den Heuvel
 
Jan te Pas

Jan te Pas

12/10/2018 08:09:32
Quote Anchor link
@Thomas,
Helder. Ik ga de tabel in ieder geval opnieuw opzetten en er op letten de character encoding uniform te maken. Ik loop morgen de code voor ze zekerheid nog eens door. Dankallen voor de informatie.
 
- Ariën  -
Beheerder

- Ariën -

12/10/2018 10:20:24
Quote Anchor link
Als je tussentijd dus een set_charset() gebruikt, en je dus 'je data mee om zeept helpt'. Wat zijn dan de stappen om het te kunnen analyseren en te debuggen. Ik vind het zonde van mijn tijd om 10.000 records aan berichten door te spitten.

En hoe kom je vooraf te weet dat je 'om zeep geholpen' data in je database hebt?

Daar ben ik vooral benieuwd naar, omdat ik niet kan garanderen of er sprake van is.
 
Thomas van den Heuvel

Thomas van den Heuvel

12/10/2018 14:13:12
Quote Anchor link
EDIT: vragen gesplitst
- Ariën - op 12/10/2018 10:20:24:
En hoe kom je vooraf te weet dat je 'om zeep geholpen' data in je database hebt?

Hier loop je meestal -in ieder geval de eerste keer :)- op een gegeven moment gewoon tegenaan, vaak omdat je in het begin nog niet alle spelregels en interacties kent.

Dit is waarschijnlijk niet iets wat je van tevoren kunt afvangen, tenzij je voor het wegschrijven al een soort van character encoding controle verricht op de DATA die de database in gaat. Maar zelfs dan, als dit "verkeerd" geëncodeerd zou zijn (op een manier die er voor zorgt dat je tekst niet wordt weergegeven zoals je zou verwachten), dan kan een machine dat mogelijk niet detecteren want die zou de data dan ook echt moeten interpreteren. De bytereeksen kunnen namelijk best legaal zijn voor de gebruikte character encoding. In tegenstelling tot een machine kunnen wij direct op ons scherm zien wanneer een tekst door de vleesmolen is gegaan :).

- Ariën - op 12/10/2018 10:20:24:
Wat zijn dan de stappen om het te kunnen analyseren en te debuggen. Ik vind het zonde van mijn tijd om 10.000 records aan berichten door te spitten.

Je hebt geen 10.000 records nodig, maar slechts één of enkele instanties waar het misgaat om te kunnen hercontrueren wat er gebeurt.

Dit heb ik ook al min of meer eerder uitgelegd, maar ik zal nogmaals een poging ondernemen.

Gegeven een tekstpassage waar iets mis mee is, deze staat waarschijnlijk ergens in een kolom in een databasetabel. Noem dit opzet A.

Wat je nu vervolgens doet is deze situatie opnieuw creëren maar dan op de goede manier door alle character encoderingen in de pas te laten lopen en expliciet in te stellen. Dus alles van het opbouwen van de pagina tot het weergeven van de data zorg je gewoon dat dit van begin tot eind klopt. Dat kan redelijk eenvoudig. Nu heb je dus een (minimale) kloppende opzet B.

Vervolgens kun je deze situaties met elkaar gaan vergelijken. Dit zonder de werking van opzet A te veranderen, we hebben immers nog niet vastgesteld wat er mis is!

Wat we hier concreet doen is kijken naar de wijze waarop de tekst daadwerkelijk staat opgeslagen in het geheugen. Dit doen we met de PHP-functie bin2hex(), hiermee kun je binaire data hexadecimaal representeren. Het equivalent in MySQL is HEX(). Bijkomend voordeel is dat deze hexadecimale representatie ongevoelig is voor nuances tussen character encoderingen.

Nu kunnen we dus:
- met HEX() aan de database-zijde kijken (in zowel opzet A als B) hoe de oorspronkelijke organisatie is
- met bin2hex() aan de PHP-zijde kijken (in zowel opzet A als B) hoe het uiteindelijk de database uitkomt

In opzet B zou de HEX() waarde van de tekstkolom in de database hetzelfde moeten zijn als de bin2hex() waarde van de uitgespuugde tekst omdat er nergens in dat hele verhaal onder water vertalingen uitgevoerd zouden moeten zijn, alle character encoderingen waren immers gelijk geschakeld.

Dan kun je dat dus vergelijken met opzet A en na kunnen gaan waar er een verandering plaatsvindt, en hoe deze afwijkt van opzet B.

Daarna is het zaak om de "foute" vertaling van B naar A opnieuw te creëren waarmee je in principe bewijst hoe het precies fout is gelopen. En dit kun je controleren aan de hand van de hexadecimale waarden.

Tot slot verzin je iets waarin je de omgekeerde vertaalslag (van A naar B) bewerkstelligt. Dit is dan de eenmalige conversie die je uitvoert.

En dan moet je er natuurlijk voor zorgen dat vanaf dat moment de DATA op de goede manier de database in gaat door het repareren van set_charset(), meta-tag of header(), accept-charset in formulieren et cetera (dus in wezen wat je in opzet B deed).

Nota bene: als er na al deze tests uitrolt dat er niets fout gaat dan betekent dat dus dat er op een andere plek iets (grandioos) misgaat.

Enne, dit is nog steeds actueel (2003):
The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)
Gewijzigd op 13/10/2018 15:20:31 door Thomas van den Heuvel
 
Thomas van den Heuvel

Thomas van den Heuvel

13/10/2018 14:34:13
Quote Anchor link
Wat toevoegingen gedaan in de eerdere reactie om afzonderlijke vragen beter te beantwoorden.
Gewijzigd op 13/10/2018 14:34:25 door Thomas van den Heuvel
 
- Ariën  -
Beheerder

- Ariën -

13/10/2018 15:20:14
Quote Anchor link
Inmiddels heb ik gezien dat ik nog geen character-encoding meegeef aan mijn data, en dat deze in MySQL als latin1-collatie opgeslagen staat. Volgens mij moet de stap naar UTF-8 niet zo heel groot zijn, als ik mij niet vergis na alles door te hebben gelezen.
 
Thomas van den Heuvel

Thomas van den Heuvel

13/10/2018 15:27:12
Quote Anchor link
- Ariën - op 13/10/2018 15:20:14:
Inmiddels heb ik gezien dat ik nog geen character-encoding meegeef aan mijn data, en dat deze in MySQL als latin1-collatie opgeslagen staat. Volgens mij moet de stap naar UTF-8 niet zo heel groot zijn, als ik mij niet vergis na alles door te hebben gelezen.

Niet helemaal. Als je geen character encoding meegeeft na het maken van een verbinding, dan wordt een default character encoding verondersteld, dit is doorgaans latin1, tenzij anders geconfigureerd. Omdat je niet uit kunt gaan van een "standaard" default is het eigenlijk bijna altijd beter om deze expliciet in te stellen.

Dit heeft wel een aantal consequenties.
Indien je tabellen gedefinieerd zijn als utf8 (of equivalent) dan zal MySQL automatisch alle data die zij binnen krijgt voor wegschrijven converteren naar utf8. Immers: MySQL gaat er vanuit dat jij alles in latin1 aanlevert. Gevolg: alle data staat dubbel utf8-geëncodeerd in de database. Nu heb je daar op heden mogelijk geen last van gehad omdat als jij data opvraagt uit je database MySQL ziet dat je wilt communiceren middels latin1. De dubbele encoding wordt dan weer ongedaan gemaakt omdat er een eenmalige vertaling terug plaatsvindt van "utf8" naar "latin1".
Daarnaast werkt je escaping-functionaliteit mogelijk niet goed, omdat deze latin1 veronderstelt terwijl je met (dubbel geëncodeerde) utf8-data werkt.

Als je nu klakkeloos een set_charset() statement toevoegt kom je in de situatie terecht waarin je data op den duur mogelijk deels verkeerd en deels juist geëncodeerd is waardoor het een hels karwei wordt om alles recht te trekken. Het is daarom zaak de goede volgorde aan te houden:
1. identificeer het precieze probleem
2. voer een eenmalige conversie uit en tegelijkertijd
3. repareer je code zodat alles vanaf dat moment juist wordt weggeschreven

Een collatie is trouwens iets compleets anders als een character encoding. (interne link)

EDIT: MySQL werkt eigenlijk best vlekkeloos MITS jij er zorg voor draagt dat je communiceert volgens de ingestelde character encoding. Als deze niet klopt, dan kan MySQL op geen enkele manier haar werk goed verrichten, en ben je in principe zelf diegene die alle stront veroorzaakt.
Gewijzigd op 13/10/2018 16:56:07 door Thomas van den Heuvel
 



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.