Diakritische tekens worden opeens vraagtekens

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Full stack developer

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

IoT Software Developer PHP

Functie omschrijving Voor een klein softwarebedrijf in Breda, zijn wij op zoek naar een IoT software developer met kennis van PHP. In deze rol wordt je verantwoordelijk voor het vernieuwen van het multimedia platform van een super tof bedrijf in Breda. Je gebruikt PHP als programmeerlaag, en bent in staat om de helicopterview te pakken / projectmatig te werken. Jouw werkzaamheden zien er als volgt uit: Je gaat aan de slag met de ontwikkeling en vernieuwing van het "intern" ontwikkelde multimedia platform. Je neemt de lead in het moderniseren van het platform door het deels opnieuw op te zetten of

Bekijk vacature »

Senior Front-End Developer

Als Senior Front-End Developer bij Coolblue verbeter je de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Wat doe je als Senior Front-End Developer bij Coolblue? Als Senior Front-end Developer werk je aan de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Je vindt het leuk om samen te werken met de UX designer om stories op te pakken. Daarnaast ben je trots op je werk en verwelkomt alle feedback. Ook Senior Front-end Developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om te doen Verbeteren van de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Nadenken

Bekijk vacature »

Front-end developer (React)

Functie Het frontend team bestaat momenteel uit 4 dedicated front-enders en is hard aan het groeien! Ook werken er diverse designers waar je veel mee schakelt. Samen leveren jullie een essentiële bijdrage aan de applicaties die ze voor hun klanten realiseren, jij bent hierin de schakel tussen de eindgebruiker en de slimme backend. Je werkt in het frontend team samen met de backend teams en product owners om te zorgen dat onze applicaties een fijne gebruikerservaring opleveren. Ze werken o.a. met: React, Atomic design, Styled components, JavaScript / TypeScript, NPM, Webpack Blade templates, HTML, SCSS, Git flow. Eisen • HBO

Bekijk vacature »

Junior Developer Low-code

Dit ga je doen Low-code ontwikkeling van software voor landelijk bekende organisaties; Samenwerken in een team van 10 collega's; Opleveren van mooie eindproducten, middels de Agile methodiek; Direct contact met de eindklant over de gewenste oplossingen. Hier ga je werken Als startende IT-professional kom je te werken in de regio van Lelystad bij een organisatie die met toonaangevende klanten uit heel Nederland samen werkt. De producten en diensten van de organisatie bereiken miljoenen Nederlanders. Hierbij komt een grote hoeveelheid informatie kijken en deze moet discreet en veilig verwerkt worden. De processen die hierbij horen worden door het IT team vormgegeven.

Bekijk vacature »

Frontend Developer - Leeuwarden

Als Frontend Developer bouw jij mee aan het onderwijs van de toekomst! In een scrum team werken met jonge en enthousiaste collega’s, moderne technieken, ruimte voor eigen ontwikkeling en op een proactieve wijze kunnen meewerken aan innovatie binnen het onderwijs. Magister is het state-of-the-art softwarepakket dat scholen in het voortgezet onderwijs op alle fronten ontzorgt. Van leerlingenadministratie tot het ondersteunen van individuele leerlijnen, van toegang tot digitaal lesmateriaal tot het plannen van het lesrooster. In de Magister app bedient Magister ruim 2,5 miljoen gebruikers waarvan, dagelijks meer dan 600.000 unieke. Hiermee is Magister de absolute marktleider in onderwijsland. Wat vragen

Bekijk vacature »

Medior/senior Front-end developer (Vue.js)

Functie Als Front-end developer ben je uiteindelijk overkoepelend aan de slag voor de 3 ontwikkelteams die ieder aan een specifiek product werken. In samenwerking met de UX-designer en de huidige Front-end developer zorg je voor gebruiksvriendelijke software. Lijkt het jou interessant om complexe problemen op te lossen en feautures naar een hoger niveau te tillen? En vind je het niet erg om oudere delen van de applicaties te refactoren i.c.m. het toevoegen van nieuwe functionaliteiten? Dan komen wij graag met je in contact. Eisen • HBO werk- en denkniveau (ze kijken niet naar papieren, maar naar denkniveau, motivatie en zelfredzaamheid)

Bekijk vacature »

Anaplan Developer

Dit ga je doen What are you going to do: Picking up Stories: Design planning had, how are we going to build it in Anaplan; Talking to the end user to build a forecasting model; Having contact with the data team about which data is needed; Being able to convert an Excel sheet into a 3, 4 or 5 dimensional modeling environment; Giving knowledge sessions about Anaplan; Solving incidents; Making instructional videos on how teams should read forecasts; Writing blogs about forecasting. Hier ga je werken We are looking for an Anaplan Builder to deliver end-to-end solutions within a big

Bekijk vacature »

IoT Developer

Ben jij innovatief, heb jij passie voor energie en ben je data gedreven? Bouw dan mee aan IoT binnen Bredenoord. Samen met een gedreven team werk jij aan mooie technische en innovatieve oplossingen. Wat houdt de functie van IoT Developer in? Binnen Bredenoord zijn wij momenteel volop in ontwikkeling met ons IoT platform. Als uitbreiding van ons team zijn wij op zoek naar een IoT Developer. Je zal in projectverband meehelpen met het implementeren van IoT vraagstukken binnen Bredenoord. Als IoT Developer op onze R&D-afdeling word je verantwoordelijk voor het verder inrichten en beheren van ons nieuwe IoT platform. Dat

Bekijk vacature »

Freelance JAVA / C# Developer

Functieomschrijving Voor een opdrachtgever in omgeving Zoetermeer zijn wij op zoek naar ervaren JAVA of C# Developers die graag op projectbasis willen werken. Je komt terecht bij een informele developers club die mooie projecten uitvoeren voor grote klanten. Ben je een ervaren freelancer of werk je in loondienst en ben je toe aan een nieuwe uitdaging? Lees dan snel verder want wie weet is dit een leuke vacature voor jou! Het fijne van deze werkgever is dat je zelf mag beslissen hoe je te werk wilt gaan. Wil je als freelancer werken dan is dat OK. Wil je de zekerheid

Bekijk vacature »

Front-end developer Supply Chain Angular, ReactJS,

Functie Het development team bestaat momenteel uit 9 fullstack (Python en .NET) developers. Binnen het team ga jij je toespitsen op het creëren van de optimale toegankelijkheid en user experience. Om dit voor elkaar te krijgen zul je ontwerpen, programmeren, testen en implementeren. Het hele proces dus! Maar ook bijvoorbeeld meedenken over strategie en design. Hierin krijg je veel vrijheid om de functie naar eigen inzicht in te vullen en te pionieren. Alle data die wordt gebruikt is zichtbaar in een webapplicatie, geschreven in Angular en React. Momenteel zijn ze bezig om de dashboards anders vorm te geven en de

Bekijk vacature »

Developer (One Data)

Do you have experience with managing IT Teams in a service delivery organization? Are you keen to bring the team and our platform to a higher level? Then Nutreco has a very interesting role for you! As a One Data developer you are responsible for the management, running and functional use of our integration landscape and processes within Nutreco. Nutreco is using at this time BizTalk 2016, and Apigee for its API management, to be replaced by Azure Integration Services as of 2023. You will be part of a virtual teams of 11 people (own and outsourced) working in an

Bekijk vacature »

PHP Developer

Functieomschrijving Vanuit het hoofdkantoor in omgeving Roosendaal, ontwikkel je als PHP Developer niet alleen webapplicaties, maar ben je verder ook gefocust op het continu inspelen op nieuwe trends en ontwikkelingen m.b.t software development. Naast het bouwen van webapplicaties, ontwikkelen zij ook webshops en websites voor gave opdrachtgevers! Wat ga je doen? Het schrijven van schone en efficiënte codes volgens het Symfony framework; Het ontwerpen en implementeren van webapplicaties met het Symfony-framework; Onderhouden en updaten van bestaande applicaties die zijn gebouwd met het Symfony framework; Het testen van ontwikkelde applicaties om te zorgen dat ze goed functioneren en voldoen aan de

Bekijk vacature »
MV Tol

MV Tol

27/03/2024 19:32:18
Quote Anchor link
Ik weet dat hierover al eerder vragen gesteld zijn, maar toch wil ik mijn specifieke situatie even voorleggen.

Ik heb een website met grote database.
- Apache
- Clientversie van database: libmysql - 5.5.68-MariaDB
- PHP-uitbreiding: mysqli Documentatie
- PHP-versie: 5.4.16
Deze draait prima, maar binnenkort moet de website verhuizen naar een nieuwere server.

Ik heb een exacte kopie van de database op de nieuwe server gezet. Daar zijn de eigenschappen:
- Apache
- Cliëntversie van database: libmysql - mysqlnd 8.0.30
- PHP-uitbreiding: mysqli Documentatie curl Documentatie mbstring Documentatie
- PHP-versie: 8.0.30

Iets wat op de oude server prima werkt, gaat op de nieuwe fout.
In sommige tabellen komen letters met accenten voor, zoals in het woord "één". Deze speciale tekens staan in de database ook werkelijk als é opgeslagen (en niet met de html-code é).

Op de huidige (oude) website worden de speciale tekens keurig afgebeeld.
Op de nieuwe website veranderen deze tekens in een zwart vierkantje met een wit vraagteken erin.

DATABASE (oud en nieuw):
- Collatie van de serververbinding: utf8mb4_unicode_ci
- Collatie van de database: latin1_swedish_ci
- alle tekstvelden in een tabel: Collatie latin1_swedish_ci

In de html-header van de website (oud en nieuw):
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">

Een veel gehoorde tip (ook op dit forum) is: je moet alles instellen op UTF-8 en dan komt dit probleem niet voor.
Maar voordat ik me in dat soort veranderingen stort, zou ik willen weten waarom ik op de oude website met dezelfde instellingen de juiste tekens zie en op de nieuwe website niet.

Is er ergens een instelling voor de nieuwe server/database, die ervoor kan zorgen dat de é uit de database ook weer een é op de website wordt? Dat zou mij enorm helpen.
 
PHP hulp

PHP hulp

02/06/2024 12:21:25
 
- Ariën  -
Beheerder

- Ariën -

27/03/2024 19:36:44
Quote Anchor link
Gaat het om content uit een database? Of om hardcoded content met een é in een echo bijvoorbeeld?
 
MV Tol

MV Tol

27/03/2024 20:02:00
Quote Anchor link
Het is content in de database.
Tekst die in de database is opgeslagen en die op de website moet verschijnen.
 
- Ariën  -
Beheerder

- Ariën -

27/03/2024 20:39:06
Quote Anchor link
Gebruik je ook een characterset bij de connectie met je database?
 
Adoptive Solution

Adoptive Solution

27/03/2024 21:54:09
Quote Anchor link
Ik gebruik utf8mb4_general_ci voor database en tabellen.

En dit in de webpagina :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />


Je kan er de hele unicode tekenreeks in kwijt.

https://en.wikipedia.org/wiki/List_of_Unicode_characters
 
- Ariën  -
Beheerder

- Ariën -

27/03/2024 22:07:36
Quote Anchor link
Waarom zou je eigenlijk nog op de oude iso-8859-1-characterset en de collatie latin1_swedish_ci willen blijven leunen? Met een goede aanpak zou je prima naar UTF-8 kunnen gaan. Maar dan moet je niet teveel rare fratsen en 'hacks' in je code hebben staan die je data uiteindelijk kunnen vernachelen.

En ja, ook daar wil ik ook komende tijd naar kijken voor PHPhulp. Wat volgens mij niet veel moeite lijkt te zijn.
Gewijzigd op 27/03/2024 22:10:33 door - Ariën -
 
MV Tol

MV Tol

27/03/2024 23:22:48
Quote Anchor link
- Ariën - op 27/03/2024 22:07:36:
Waarom zou je eigenlijk nog op de oude iso-8859-1-characterset en de collatie latin1_swedish_ci willen blijven leunen?


Er staat heel veel content in de database. Dat bouw je niet zomaar even om.
De oude php5 en oude server konden er fantastisch mee uit de voeten. Dan moet het toch een setting zijn die bij php8 en de nieuwe server hetzelfde effect geven?
 
- Ariën  -
Beheerder

- Ariën -

28/03/2024 00:10:39
Quote Anchor link
Hoezo bouw je dat niet zomaar even om?
Als ik zoek op internet naar 'iso to utf-8 converter' kom ik wel wat scripts tegen. Ik heb op mijn laptop ook een dergelijk script liggen die ik ooit met succes gebruikt heb.

Als ik tijd vind zal ik het morgen of eerdaags even in de Scripts-sectie plaatsen.
Maar in dit topic vind je vast goede tips:

https://www.phphulp.nl/php/forum/topic/overstap-van-iso88591-naar-utf8/102227/

Ga je er mee spelen: MAAK BACKUPS!
Bij sterke voorkeur in een testomgeving.

Ik zie wel verschillen in je database versie, en het gebruik van de oude PHP 5. Misschien dat daar ergens net iets anders werkt in combinatie van door jouw gebruikte functies? Maar stap gewoon meteen over naar UTF-8.
Gewijzigd op 28/03/2024 00:17:06 door - Ariën -
 
Ad Fundum

Ad Fundum

28/03/2024 07:27:49
Quote Anchor link
- Ariën - op 27/03/2024 22:07:36:
Waarom zou je eigenlijk nog op de oude iso-8859-1-characterset en de collatie latin1_swedish_ci willen blijven leunen?

Goede vraag. Voordelen:
- alle 'string'-functies werken dan, omdat die stiekem op byte-level werken
- je kunt 'gewoon' met de byte index van een array werken om karakters aan te wijzen
- het is sneller
- je hebt geen extensies nodig
- je hoeft je niet bewust te zijn van hoe Unicode en UTF-8 werkt, je kunt je niet vergissen

MV Tol op 27/03/2024 19:32:18:
Is er ergens een instelling voor de nieuwe server/database, die ervoor kan zorgen dat de é uit de database ook weer een é op de website wordt?

Nee, die is er niet.

Het traject PHP tot en met de browser bestaat uit vele instellingen.
Omdat UTF-8 de standaard is in PHP sinds versie 5.x (kennelijk was het nog niet versie 5.4) is de tutorial over Unicode slechts gedeeltelijk van toepassing.
Let wel: de standaard van HTML5 is Unicode (UTF-8) en die van JavaScript ook (UTF-16). Maar dat neemt niet weg dat browsers ook gewoon SBCS ondersteunen.

Ik kan op dit moment een weloverwogen gok doen wat er mis gaat. Wanneer de browser een blokje met een vraagteken weergeeft, dan is dat het Replacement karakter. Wanneer de browser de pagina zou renderen met de juiste encoding, zou dat karakter niet verschijnen. Ofwel, de browser denkt dat je website in Unicode staat. Dat kan komen wanneer je HTTP-header van de webserver zegt dat je pagina Unicode is.

Mocht je tegen meer problemen aanlopen, check dan je php.ini in de sectie van mbstring (die op je nieuwe server staat). Het gaat om deze instellingen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
[mbstring]
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none;

Zie voor de details:
- https://www.php.net/manual/en/mbstring.http.php
- https://www.php.net/manual/en/mbstring.configuration.php
 
B a s
Beheerder

B a s

28/03/2024 18:09:27
Quote Anchor link
Heb je dit geprobeerd?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$string
= mb_convert_encoding($string, 'UTF-8', mb_detect_encoding($string));

var_dump(htmlspecialchars($string, ENT_NOQUOTES, 'UTF-8'));[/code]
 
MV Tol

MV Tol

29/03/2024 15:49:06
Quote Anchor link
De gouden tip kwam van B a s, want hij noemde mb_detect_encoding.
Dat bracht mij op deze pagina:
https://www.php.net/manual/en/function.mb-detect-encoding.php

Voor deze test heb ik in de database deze onzinnige tekst met veel accenttekens opgeslagen:
reële reçu's à la café.
Ik haal de tekst op met php:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
    $query = "SELECT `tekst` FROM `tabelnaam` WHERE `id` = 3756";
    $res = mysqli_query($db_conn, $query);
    while ($tabel = mysqli_fetch_array($res))
    {
        $tekst   = $tabel['tekst'];
    }


Als ik hierop deze test loslaat:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
    var_dump(mb_detect_encoding($tekst, ['ASCII', 'UTF-8', 'ISO-8859-1'], false));
    var_dump(mb_detect_encoding($tekst, ['ASCII', 'UTF-8', 'ISO-8859-1'], true));


is het resultaat:
ISO-8859-1
ISO-8859-1
Er is dus wel ISO-chocola van te maken.
Het blijkt inderdaad mogelijk om de als UTF-8 geïnterpreteerde tekst te presenteren als ISO-8859-1.

Het volgende php-script beeldt de opgehaalde tekst op twee manieren af: de verminkte (met vraagtekens) en de gecorrigeerde versie:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4

    print $tekst;
    print "<br/>";
    print mb_convert_encoding($tekst, 'UTF-8', 'ISO-8859-1');


Dit geeft als output:
re?le re?u's ? la caf?
reële reçu's à la café

Om de iso-teksten te corrigeren, is de volgende functie iso() de oplossing:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
    
function iso($data)
{
    $data = mb_convert_encoding($data, 'UTF-8', 'ISO-8859-1');
    return $data;
}    


Hiermee kan ik verder, denk ik. Ik zocht immers naar een hulpmiddel om de correct gespelde tekst uit de database ook correct op het scherm te krijgen.
Allemaal bedankt voor jullie suggesties.
 
Ivo P

Ivo P

29/03/2024 15:55:33
Quote Anchor link
Ik zou voor je steeds blind de functie iso() overal op los laat deze functie ook voorzien van die mb_detect_encoding() om te controleren of de tekst in kwestie inderdaad iso-8859-1 is.

Voor hetzelfde is dat niet op al je teksten van toepassing,
of voer je straks op je nieuwe server teksten als iets anders dan iso-8859-1 toe.
 
MV Tol

MV Tol

29/03/2024 16:04:16
Quote Anchor link
Ja, natuurlijk. Maar goed dat je het nog even noemt.
Ik bouw nog een controle in, in de functie iso(), gebaseerd op de proef met var_dump, die ik gebruikte om vast te stellen dat de tekst ISO-8859-1 was.
 



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.