ge�nventariseerd ipv geïnventariseerd

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ervaren PHP Developer gezocht in de omgeving van D

Mijn opdrachtgever is een gevestigde onderneming in de omgeving van Den Bosch, het bedrijf heeft een geautomatiseerd platform ontwikkeld die het mogelijk maakt om in zoek machines te adverteren. Dit zoen zij dagelijks voor verschillende internationale partijen, hierbij komt een hoop data kijken die omgezet moet worden in Smart data in een Dash board voor de klanten zodat de resultaten goed overzichtelijk zijn. Het bedrijf heeft sinds kort ook een extra locatie geopend in Zuid Holland, deze vestiging dient alleen als Development center waar alleen de code ingedoken wordt. Het Development team in Den Bosch bestaat uit 8 man waarvan

Bekijk vacature »

Groningen - Senior Java Ontwikkelaar - INH - NL

JAVA ONTWIKKELAAR Permanente functie inhouse (36 uur) - Groningen Ben jij een Java Ontwikkelaar en op zoek naar een nieuwe uitdaging in Groningen? Als Java Ontwikkelaar ben je verantwoordelijk voor het ontwerpen en bouwen van nieuwe applicaties voor diverse projecten. Vaardigheden: Als Java Ontwikkelaar heb je het volgende: Bachelor en/of Master Opleiding; Minimaal drie jaar werkervaring in Java Development; Ervaring met Spring, Hibernate, Maven, Apache en AngularJS; Pré: Ervaring met XL Deploy en Puppet. Over het bedrijf: Het bedrijf heeft vestigingen door heel Nederland. Je zal werkzaam zijn in het kantoor in Groningen. Hier zal je werken in een team

Bekijk vacature »

Web Backend developer Java/Cloud

Working at Philips via Yacht means helping departments to get ready for the future. Are you up for it? Functieomschrijving Working on a project with Philips means that you contribute to the fast realization of prototypes as well as effective product development. You do this by applying deep engineering knowledge of the most relevant coding platforms and standards, in combination with proven Agile collaboration methods and test-driven development. You will actively contribute to all aspects of agile software development: planning, tracking, architecture, development, configuration management, testing, integration, validation, and documentation to ensure solutions for challenging problems with robust, scalable, reusable,

Bekijk vacature »

Senior Java developer

Voor een klant van CF ben ik op zoek naar een Java specialist die beschikbaar gaat komen voor een nieuw project. Wij zoeken naar een fullstack Java developer die hands-on aan de slag zal gaan met het ontwikkelen, testen en implementeren van de software. Je hebt kennis van CI/CD en hebt eerder gewerkt binnen een innovatieve omgeving. Het is een uitdagend en afwisselend project waarin je verschillende werkzaamheden zal gaan hebben. Daarom is zelfstandigheid en een hands-on mentaliteit van groot belang. Technieken: Zeer sterke Java ervaring Spring, Webservices (SOAP/REST) Jenkins Pré: Docker, Kubernetes, Kafka en ervaring binnen DevOps Omgeving Start:

Bekijk vacature »

Nabij Doetinchem medior .NET Ontwikkelaar gezocht!

Organisatie & Afdeling Voor een van mijn businesspartners nabij Doetinchem ben ik op zoek naar ervaren .NET ontwikkelaars die ontzettend graag wilt werken met de nieuwste technieken op het gebied van Microsoft technologie. Deze partij is volledig gericht op het ontwikkelen van software o.b.v. Microsoft.NET. Naast het geven van gerichte trainingen aan hun klanten detacheren ze ook .NET specialisten. Ze hebben op dit moment twee vestigingen waaruit ze opereren. Op dit moment werken er ongeveer 40 personen, waarvan ongeveer 25 consultants. Ze zijn hard aan het groeien, en daarom zijn ze altijd op zoek naar ervaren .NET Ontwikkelaars. Er hangt

Bekijk vacature »

Front-end developer met kennis van Angular2 gezoch

De organisatie: Dit bedrijf verzorgd innovatieve oplossingen voor veehouders, wereldwijd! Met de software kunnen veehouders monitoren of koeien voldoende eten krijgen, of ze voldoende melk geven en of ze gezond zijn. Mede dankzij deze software hebben de koeien uiteindelijk ook een beter leven. Het bedrijf telt zelf meer dan 2000 medewerkers verdeelt over Nederland, België, Brazilië en Nieuw Zeeland. De software wordt ontwikkeld in kleine specialistische scrum-teams van 8 man. Hierdoor blijft alles persoonlijk en is er voldoende ruimte voor jouw eigen inbreng. Bij dit bedrijf kun je een hele goede (door)start van je carrière tegemoet gaan, ze groeien enorm

Bekijk vacature »

Lead PHP developer

Organisatie Veel bedrijven roepen innovatief te zijn en met de nieuwste technieken te werken, deze organisatie doet dát ook écht. Dankzij continue innovatie bieden zij hun klanten de beste proposities aan en laten ze hun klanten echt excelleren. De producten die ze leveren zijn met name digital marketing software. Als Lead PHP developer zal je de gehele levenscyclus van de software begeleiden, van ontwikkeling tot implementeer, van concept tot strategie. Er heerst een work hard, play hard cultuur binnen dit bedrijf, waarbij iedereen op een informele manier met elkaar om gaat. Omdat er veel verschillende applicaties zijn waar aan gewerkt

Bekijk vacature »

Beginnende Junior .NET Developer met HBO IT opleid

Functieomschrijving In een klein team van 10 Software .NET ontwikkelaars krijg je de gezamenlijke verantwoording over de ontwikkeltrajecten. Het team kent een platte structuur met weinig hiërarchie waarin iedereen elkaar ondersteunt. Op basis van aangeleverde requirements en ontwerpen ga je zowel bestaande applicaties beheren en uitbouwen als nieuwe applicaties bouwen. De werkzaamheden variëren waardoor je veel afwisseling hebt in je ontwikkel werkzaamheden. Dit alles in .NET omgeving en Mobile Xamarin omgeving. Heb jij ervaring met beide of wil jij ervaring op doen met beide ontwikkelmethodes? Dan heb je als junior hier een hele leuke functie aan! Kernwoorden: .NET Core, Azure,

Bekijk vacature »

Junior .NET Ontwikkelaar gezocht nabij Zwolle!

Organisatie & Afdeling Voor een kleine, maar leuke partij nabij Zwolle, zijn wij op zoek naar een junior .NET Ontwikkelaar die zich graag verder wilt ontwikkelen in zijn/haar vakgebied. Deze partij ontwikkeld software op maat. Ze zijn gespecialiseerd in het ontwikkelen van web-based applicaties. Deze applicaties zijn gebaseerd o.b.v. ASP.NET. Deze partij ontwikkeld software voor een partner bedrijf en deze partner bedrijf geeft de software uit aan haar klanten. Op dit moment werken er ongeveer 10 medewerkers en ze zijn groeiende. De afdeling bestaat uit 3 developers en daarbij is ook één van de twee eigenaren deel van het team.

Bekijk vacature »

Python Developer / Lead / high-tech omgeving / Ame

Functieomschrijving Ben jij een Python Developer, ambieer jij een rol als Lead Developer en wil je aan de slag binnen een high-tech omgeving? Word jij omschreven als een spil in het team, ben je oplossingsgericht en weet jij zaken tot een goed einde te brengen? Lees dan snel verder! Het bekleden van een Lead rol in een ontwikkelteam van 4 FTE; Mee ontwikkelen aan de software van High Tech producten. Dit gebeurt voornamelijk in Python; Verder professionaliseren en structureren van het development proces; Het ophalen van requirements en deze omzetten in technische implementaties; Meedenken over de gebruikte software architectuur; Overleg

Bekijk vacature »

.NET Developer bij een groep internetfanaten in Ar

Deze internetfanaten in het hartje van Arnhem zijn dringen op zoek naar versterking in de vorm van .NET developers. Bij deze organisatie staat de gebruiker altijd centraal. Vanuit verschillende disciplines wordt er hier keihard gewerkt aan o.a. het lanceren van websites en campagnes, volledig gericht op de behoeften van de verschillende doelgroepen. Samen met de opdrachtgevers worden ideeën uitgedacht waarbij details rondom websites en campagnes afgestemd kunnen worden. Of het nu gaat om het personaliseren van webpagina's en producten of volledig nieuwe customer journeys aangevuld met landingpages en gericht op conversie. Deze organisatie heeft het allemaal in huis. Samen met

Bekijk vacature »

Senior BE/FS Developer - Hypoteek - Amsterdam - M

THIS POSITION IS OPEN FOR NL.INT. CANDIDATES. VISA SPONSORSHIP AND RELOCATION IS PROVIDED. PERMANENT POSITION IN AMSTERDAM - THE NETHERLANDS. Below you'll find recently opened position. Please kindly let me know if it fits your profile. If it doesn't fit your profile I would very much appreciate you sending your updated details, interests and preferences. This FinTech company with their office in the heart Amsterdam is looking for a talented Lead Full-Stack Developer. They create powerful calculation tools and a user-friendly dashboard. With their founders having a background in engineering, they understand the importance of good code, as well as

Bekijk vacature »

Senior Software Ontwikkelaar (PHP-Symfony4-NodeJS-

Wil je werken in een professionele omgeving met enthousiaste, gemotiveerde collega’s en je develop-skills verder ontwikkelen? Dan is dit een baan voor jou! Organisatie: Deze kleine (15 werknemers in totaal), maar zeer ambitieuze organisatie heeft een Cloud software ontwikkeld om organisaties beter te managen. Vanuit hun gezellige kantoorpand werken zij samen in verschillende teams (development, sales, servicedesk). Het hart van het bedrijf is hun eigen ontwikkelde Software product. Binnen hun software ligt er voor iedere developer een uitdaging om z’n kennis te verdiepen en te verbreden, of je nu een junior bent of al jaren meedraait in de development-wereld. Er

Bekijk vacature »

Lead C#.NET Software Developer regio Arnhem!

Functieomschrijving Het beveiligen van C# Software Code-Level. Een uitdagende baan in regio Arnhem waar je jezelf verder kan ontplooien als .NET Developer met een focus op security. Werken bij een leuke en informele organisatie voor 32 of 36 uur in de week. Klink dit interessant? Dan hoor ik graag van u Je komt terecht in een team die zich bezighoudt met het bouwen van nieuwe opossingen voor zowel intern gebruik als voor (internationale) klanten. In totaal zijn er 3 software development teams binnen de organisatie en ieder met hun eigen focus. Men werkt in DevOps / Scrum teams betaande uit

Bekijk vacature »

Medior C# .NET developer gezocht

Organisatie Voor een van mijn businesspartners in de regio van Nijmegen ben ik op zoek naar een medior C# developer. Dit bedrijf ontwikkelt, als volwaardig Microsoft Partner, softwareoplossingen voor onder andere het onderwijs en de sportbranche. Denk bij het onderwijs aan bijvoorbeeld digitale leestesten, examenplanners en plagiaatherkenning, en bij de sportbranche aan sportplanregistratie. Het is een van de oudste IT dienstverleners van Nederland, waar momenteel ongeveer dertig mensen werkzaam zijn. Op de werkvloer heerst een nuchtere en informele sfeer. Voor elke werknemer wordt een persoonlijk ontwikkelingsplan opgesteld, waarin wordt vastgesteld wat jouw ambities zijn en hoe je dit gaat bereiken.

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

19/10/2018 16:39:28
 
- 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.